Mercurial Pre-Commit Hook: Wie hakt man zum Python-Programm im aktuellen Verzeichnis?

8

Ich versuche, einen Mercurial Haken zu erstellen, die ausgeführt wird, wenn die Commits zum Haupt-Repository geschoben werden. Ich habe ein Python-Skript wie folgt erstellt:

%Vor%

Für jeden Zweig dieses commit.py dupliziert wird, wie es Mechanismen enthält, die ausgeführt werden muss, bevor der Code auf die Haupt respository geschoben wird. Der Push sollte nur erfolgreich sein, wenn diese Pre-Push-Mechanismen bestehen. Benutzer können ihre lokalen commit.py so ändern, dass sie nur eine Teilmenge dieser Pre-Push-Operationen je nach Projekt ihrer Arbeit auf und jede Person, die auf mehr als ein Projekt zu einem Zeitpunkt arbeiten laufen kann. Und so commit.py kann kein globaler Python-Skript sein, das in .hg Ordnern befinden kann.

Um Quecksilber-Lauf des lokale commit.py , in meiner Mercurial.ini-Datei (in C: \ Benutzer \ Benutzername \ Mercurial.ini) zu machen, habe ich die folgende Anweisung:

%Vor%

Das Python-Skript wird ausgeführt, wenn ich es in den .hg -Ordner lege, aber nicht, wenn ich dies tue. Kann mir jemand helfen, dieses Thema zu beleuchten? Vielen Dank.

    
Vite Falcon 26.07.2011, 11:09
quelle

1 Antwort

4

Ich habe diese Lösung über IRC für Mercurial bekommen. Wie in einem meiner Kommentare erwähnt, sollte das Skript für den Hook als absoluter Pfad angegeben werden oder es sollte ein Python-Modul in PYTHONPATH sein. Daher wurde ich von pmezard über IRC vorgeschlagen, dass ich ein fixes Skript haben sollte, das das lokale commit.py aufruft. Dies kann wie folgt geschehen:

In mercurial.ini hooken Sie zu einem 'globalen' Python-Skript, das sich im .hg -Verzeichnis des Benutzer-Home befindet, wie unten gezeigt:

%Vor%

Das 'globale' Python-Skript commit.py sieht ungefähr so ​​aus:

%Vor%

Das localcommit.py im Repository-Verzeichnis wird dann vom global commit-Skript ausgeführt und somit kann jedes Repository sein eigenes angepasstes Commit-Skript beibehalten.

    
Vite Falcon 26.07.2011, 16:07
quelle