9
votes

Comment vérifiez-vous si un repo mercurial est dans un état propre?

En tant qu'utilisateur, j'utilise habituellement hg st pour vérifier l'état d'un repo et vérifiez qu'il est dans un état propre, sans fichiers modifiés.

Ici, je voudrais faire cela par programme. Je sais que je peux également utiliser hg st pour cela, mais la sortie est inférieure à celle idéale pour la consommation par un programme informatique. Y a-t-il un meilleur moyen de vérifier si un repo mercurial est dans un état propre?


3 commentaires

Je ne vois pas pourquoi la sortie est inférieure à celle idéale pour la consommation d'un programme informatique. Si la copie de travail n'est pas propre, elle génère un caractère d'état, un espace et le chemin du fichier pour chaque fichier qui n'est pas propre. Si c'est propre, cela ne produit rien. Cela ne devient pas beaucoup plus facile que ça.


@Stevekaye: un booléen serait plus agréable :)


À propos de la restauration: J'utilise HG ST, pas "Statut HG". Cela fonctionne de manière égale et est moins de caractères à taper. Il peut être intéressant que les nouveaux arrivants d'apprendre sur ces abréviations.


4 Réponses :


7
votes

Si vous émettez la commande HG Identify --Id , il suffit d'identifier avec un caractère + lorsque le référentiel a modifié des fichiers. (Remarque: ce drapeau ne signale pas les fichiers non traqués.)

Si vous grepez le caractère de cette commande pour le caractère + , vous pouvez utiliser l'état de sortie pour déterminer s'il existe des modifications ou non: xxx


2 commentaires

Impressionnant! Je me demandais ce que ce signe "+" était. Je suppose donc que je suppose que la sortie de hg id-i suffit à avoir une bonne idée de l'état d'un repo.


Fonctionne bien pour moi, Mercurial 5.1 ajoute toujours la sortie + à la sortie de "ID HG" pour des fichiers non engagés et sur MacOS au moins l'état de la sortie du GRE fonctionne toujours comme indiqué.



2
votes

Vous devez utiliser résumé HG : xxx


0 commentaires

0
votes

La plupart des principales langues de programmation ont des API HG que vous pouvez accéder.


1 commentaires

Qu'en est-il de sh ou cmd ?



0
votes

Cette réponse pourrait être utile pour les autres personnes à la recherche de ce sujet:

J'accepte que @steve \ kayes commentaire ci-dessus que Statut HG code> est une bonne commande pour la consommation programmatique. P> Voici un exemple de l'utiliser dans un script Bash: P>

#!/bin/bash

set -e

cd /path/to/hg-repo

repo_status=`hg status | wc -l`
if [ $repo_status -ne 0 ]; then
    echo "Repo is not clean"
else
    echo "Repo is clean"
fi


0 commentaires