Come faccio a scrivere il mio hgrc in modo che Mercurial rileva i miei ami?
Domanda
'hai scritto due funzioni in un file commit_hooks.py che voglio correre prima di qualsiasi commettere è fatto insistente, ma non riesco a capire come scrivere il mio hgrc per rilevarli.
Le intestazioni di funzione sono:
def precommit_bad_merge(ui, repo, parent1=None, parent2=None, **kwargs):
...
def precommit_bad_branching(ui, repo, **kwargs):
...
Ho provato con questo " guida ", ma la documentazione è anche "l'uomo Pagey" per me. Quanto segue è un emarginato che non funziona.
[hooks]
precommit = ..\..\mno2\commit_hooks.py
Aggiorna Riscrivere la linea di aggancio a:
precommit = D:\environments\next\mno2\commit_hooks.py
rendere Mercurial rilevare il gancio precommit, ma sempre con uscite di stato 1 per qualche ragione.
Soluzione
Imposta il tuo sezione [hooks]
in questo modo:
[hooks]
precommit.foo = python:D:\environments\next\mno2\commit_hooks.py:precommit_bad_merge
precommit.bar = python:D:\environments\next\mno2\commit_hooks.py:precommit_bad_branching
La sintassi per la linea precommit
che si è utilizzato sia per i ganci esterni, in modo che stava trattando il file come uno script python autonomo (che sto supponendo che non è dal momento che si sta utilizzando le firme di funzione per l'in-process ganci).
Potrebbe essere necessario avere l'eseguibile pitone nel percorso (io lo faccio).
Per ulteriori informazioni, vedere la sezione della guida definitiva su in-process ganci ; ci sono alcune informazioni utili nascoste nei commenti.
Altri suggerimenti
La documentazione "uomo Pagey" ha una sezione sulla sintassi del gancio python:
La sintassi per ganci Python è segue:
hookname = python:modulename.submodule.callable hookname = python:/path/to/python/module.py:callable
Python ganci vengono eseguiti all'interno del processo Mercurial. Ciascun gancio è chiamato con almeno tre argomenti chiave: un oggetto ui (ui parola chiave), un repository oggetto (repo parola chiave), ed un hooktype parola chiave che dice che tipo di gancio viene usato. Argomenti elencato come le variabili di ambiente di cui sopra sono passati come argomenti chiave, senza HG_ prefisso, ed i nomi in minuscolo.
Se un hook Python restituisce un "vero" valore o solleva un'eccezione, questo è trattata come un fallimento.