2012-06-13 10 views
6

Como usuario, suelo utilizar hg st para verificar el estado de un repositorio y verificar que esté limpio, sin archivos modificados.¿Cómo se verifica si un repositorio mercurial está limpio?

Aquí me gustaría hacer esto programáticamente. Sé que también puedo usar hg st para eso, pero la salida es menos que ideal para el consumo de un programa de computadora. ¿Hay una mejor manera de verificar si un repositorio mercurial está en estado limpio?

+1

No veo por qué la salida es menos que ideal para el consumo de un programa de computadora. Si la copia de trabajo no está limpia, muestra un carácter de estado, un espacio y la ruta al archivo para cada archivo que no está limpio. Si está limpio, no produce nada. No es mucho más fácil que eso. –

+0

@SteveKaye: un booleano sería más agradable :) –

+0

sobre la reversión: uso hg st, no "hg status". Funciona igual de bien y tiene menos caracteres para escribir. Puede ser interesante para los recién llegados aprender sobre estas abreviaturas. –

Respuesta

6

Si emite el comando hg identify --id, sufijo el ID con un carácter + cuando el repositorio ha modificado los archivos. (Nota:. Este indicador no informa de archivos sin seguimiento)

Si grep la salida de este comando para el personaje +, puede utilizar el estado de salida para determinar si hay modificaciones o no:

$ 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

¡Impresionante! Me preguntaba qué era este signo '+'. Así que supongo que almacenar la salida de 'hg id -i' es suficiente para tener una buena idea del estado de un repositorio. –

3

debe utilizar 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 mayoría de los lenguajes de programación más importantes tienen APIs de HG que puede acceder.

Cuestiones relacionadas