2016-03-30 7 views
0

Ausführen des Befehls Mercurial: hg in -qhg ankommende Anzeige des Repository Stammpfad

erzeugt eine Liste, wie unten. 123: b64543 124: ef312a

Dieser Befehl wird bei mehreren Repos ausgeführt. Wie können wir den Repository-Pfad an die obige Ausgabe anhängen, um den Repo zu identifizieren? Das Ausführen des Befehls 'hg root' gibt uns diese Information, aber wir wollen nur über den Pfad wissen, wenn der Repo einen neuen Änderungssatz hat. Wir haben uns die Vorlage angesehen, konnten aber keine Variable finden, die uns die richtigen Informationen lieferte.

Apprecipiate jede Hilfe.

Antwort

1

Die einfachste Lösung für Anfügen Stammpfad zu hg incoming ist, die beiden Befehle mit && verketten (vorausgesetzt Sie verwenden Unix):

hg in -q && hg root 

Das funktioniert, weil hg incoming 0 zurück, wenn es eingehende Änderungen sind, ansonsten 1 (oder einen Wert ungleich Null, wenn ein Fehler aufgetreten ist).

Für anspruchsvollere Manipulation der Ausgabe kann sed es normalerweise tun. Beispielsweise wird der folgende Befehl dem Stamm an den Ausgang vorangestellt:

hg in -q | sed -e "1i$(hg root)" 
0

Ich würde auf ein bisschen bash zurückgreifen und hg root in der Vorlage anrufen. Unter der Annahme, alle Verzeichnisse Unterverzeichnisse der aktuellen werden (sonst wird die Liste der Verzeichnisse anders):

for i in *; do [ -d $i/.hg ] && hg incoming -R$i --template "$(hg root -R$i) {rev}:{node|short}\n"; done