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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top