J'essaye d'obtenir un hook Mercurial en cours de traitement sous Windows.
Le problème n'est pas comment écrire le crochet (Je veux utiliser un existant, dans ce cas BugTracker.Net le crochet pour l'intégration de Mercurial - Je n'ai pas trouvé de lien direct vers le fichier, mais vous pouvez le voir si vous téléchargez BT.net here, il se trouve dans le sous-répertoire "mercurial").
Le problème est de savoir comment dire à Mercurial de l'exécuter.Obtention du hook in-process Mercurial sous Windows
J'ai passé pas mal de temps à lire la documentation, mais je suis coincé en ce moment.
(il serait probablement plus facile avec une certaine connaissance de Python - que je n'ai pas)
Je sais que je dois insérer une ligne dans le fichier hgrc (dans le dossier .hg de mon dépôt).
Il y a un exemple in the HG Book qui ressemble à ceci:
[hooks]
commit.example = python:mymodule.submodule.myhook
Et il y a un autre exemple sur le Mercurial site, il ressemble à ceci:
[hooks]
changegroup = /path/to/changegrouphook
Maintenant, je veux un crochet « entrant », donc au moins je sais que je dois faire ceci:
[hooks]
incoming.btnet = X
Le pr oblem est de comprendre "X".
Le nom de fichier est hg_hook_for_btnet.py et dans le fichier, il y a une ligne qui ressemble à ceci:
def debug_out(s):
Je suppose que le nom est lui-même de la « fonction ».
a besoin donc ma ligne à ressembler à quelque chose comme ceci:
[hooks]
incoming.btnet = python:hg_hook_for_btnet.debug_out
Mais cela me donne un message d'erreur [Errno 2] Aucun tel fichier ou répertoire quand je pousse.
J'ai déjà essayé beaucoup de variations, mais ça ne marche pas et je ne sais pas ce que je fais de mal.
- Ai-je besoin python: au début ou non? Dois-je spécifier l'extension .py ou non?
- Ai-je besoin de /path/to/... comme indiqué dans l'exemple du site Mercurial (voir ci-dessus)?
- Si oui, quelle est la syntaxe correcte pour le chemin? (Juste c: \ myrepo \ ne fonctionne pas - la syntaxe doit être différent en Python)
Aussi, ai-je mis le fichier crochet dans le dossier approprié?
À l'heure actuelle, il se trouve dans le dossier principal de mon dépôt (au même niveau que le dossier .hg).
EDIT:
Martin, je l'ai changé en ceci:
[hooks]
incoming.btnet = python:~c:\HG\MyRepo\hg_hook_for_btnet.py:debug_out
Maintenant, je reçois un autre message: [Errno 22] Invalid argument
Je suppose que cela C'est à cause des arguments repo
et ui
que vous avez mentionnés. Donc, cela signifie-t-il que le script de crochet est cassé?
(comme je le disais - je ne sais pas quoi que ce soit à propos de Python, c'est un script hook existant à partir d'un open source bugtracker)
EDIT 2:
Désolé pour la confusion en ce qui concerne en -processus et processus séparé - je sais qu'il y a une différence, mais j'ai supposé que si le crochet est écrit en Python, il doit être en processus automatiquement (il s'avère que j'avais tort :-)
D'accord, avec le sy ntax dans votre réponse éditée, le script au moins s'exécute.
J'ai Python 2.7 installé (déjà fait avant que je pose la question ici) et changé la première ligne du script en #!C:\Python27\python.exe
.
Maintenant, j'obtiens ceci:
running hook incoming.btnet: c:\HG\MyRepo\hg_hook_for_btnet.py
warning: incoming.btnet hook exited with status 1
Donc le script est exécuté, mais il y a encore une erreur.
Cela semble être un problème lié à Bugtracker.NET, donc je vais demander sur la liste de diffusion BT.NET pour plus de conseils.
Merci pour votre aide si, sans vous je ne serais probablement même pas venu si loin!
J'ai édité ma question, voir ci-dessus! –