2012-06-13 1 views
6

En tant qu'utilisateur, j'utilise généralement hg st pour vérifier l'état d'un dépôt et vérifier qu'il est dans un état propre, sans aucun fichier modifié.Comment vérifiez-vous si un repo mercurial est dans un état propre?

Ici, je voudrais faire cela par programme. Je sais que je peux également utiliser hg st pour cela, mais la sortie est moins qu'idéale pour la consommation par un programme informatique. Yat-il un meilleur moyen de vérifier si un repo mercurial est dans un état propre?

+1

Je ne vois pas pourquoi la sortie n'est pas idéale pour la consommation par un programme d'ordinateur. Si la copie de travail n'est pas propre, elle affiche un caractère d'état, un espace et le chemin d'accès au fichier pour chaque fichier non nettoyé. Si c'est propre, cela ne produit rien. Cela ne devient pas beaucoup plus facile que ça. –

+0

@SteveKaye: un booléen serait plus agréable :) –

+0

à propos de la restauration: j'utilise hg st, pas "hg status". Cela fonctionne aussi bien et il y a moins de caractères à taper. Il peut être intéressant pour les nouveaux arrivants de connaître ces abréviations. –

Répondre

6

Si vous émettez la commande hg identify --id, elle suffira à l'ID avec un caractère + lorsque le référentiel a modifié les fichiers. (Note:. Cet indicateur ne signale pas les fichiers non suivis)

Si vous grep la sortie de cette commande pour le caractère +, vous pouvez utiliser l'état de sortie pour déterminer si des modifications ou pas:

$ 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

Génial! Je me demandais ce que ce signe '+' était. Donc je suppose que stocker la sortie de 'hg id -i' est suffisant pour avoir une bonne idée de l'état d'un repo. –

3

vous devez utiliser hg summary:

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

la plupart des langages de programmation API ont HG vous pouvez accéder.

Questions connexes