2012-06-13 3 views
6

Als Benutzer verwende ich normalerweise hg st, um den Status eines Repos zu überprüfen und zu überprüfen, dass es sich in einem sauberen Zustand befindet, ohne geänderte Dateien.Wie überprüfen Sie, ob sich ein Quecksilber-Repo in einem sauberen Zustand befindet?

Hier möchte ich dies programmgesteuert tun. Ich weiß, ich kann hg st dafür auch verwenden, aber die Ausgabe ist weniger als ideal für den Verbrauch von einem Computerprogramm. Gibt es einen besseren Weg zu überprüfen, ob ein Quecksilber-Repo in einem sauberen Zustand ist?

+1

Ich sehe nicht, warum die Ausgabe ist weniger als ideal für den Verbrauch von einem Computerprogramm. Wenn die Arbeitskopie nicht sauber ist, gibt sie für jede Datei, die nicht sauber ist, ein Statuszeichen, ein Leerzeichen und den Pfad zur Datei aus. Wenn es sauber ist, gibt es nichts aus. Es ist nicht viel einfacher als das. –

+0

@SteveKaye: ein boolean wäre schöner :) –

+0

über den Rollback: Ich benutze hg st, nicht "hg status". Es funktioniert gleich gut und ist weniger Zeichen zu tippen. Es kann für Neulinge interessant sein, etwas über diese Abkürzungen zu erfahren. –

Antwort

6

Wenn Sie den Befehl hg identify --id eingeben, wird die ID mit einem + Zeichen versehen, wenn das Repository Dateien geändert hat. (Anmerkung:. Dieses Flag weist keine untracked Dateien)

Wenn Sie die Ausgabe dieses Befehls für den Charakter + grep, können Sie den Exit-Status verwenden, um zu bestimmen, ob es Änderungen oder keine:

$ hg init 
$ hg identify --id | grep --quiet + ; echo $? 
1 
$ touch a 
$ hg identify --id | grep --quiet + ; echo $? 
1 
$ hg add a 
$ hg identify --id | grep --quiet + ; echo $? 
0 
+0

Super! Ich habe mich gefragt, was dieses '+' Zeichen war. Also denke ich, dass das Speichern der Ausgabe von 'hg id -i' ausreicht, um eine gute Vorstellung vom Zustand eines Repos zu haben. –

3

Sie sollten hg summary verwenden:

$ hg init 
$ echo blablabla > test.txt 
$ hg summary 
parent: -1:000000000000 tip (empty repository) 
branch: default 
commit: 1 unknown (clean) 
update: (current) 
0

Die meisten großen Programmiersprachen HG APIs haben Sie zugreifen können.

Verwandte Themen