Existe-t-il un meilleur moyen d'extraire le hachage de la révision actuelle dans Mercurial que
hg log -l1|grep changeset|cut -d: -f3
?
Une partie de mon script de déploiement d'application Web «balise» l'archive tar de l'application téléchargée avec son hachage de révision unique.
hg log -l 1
vous donne le jeu de modifications le plus récent, pas nécessairement celui vers lequel vous êtes actuellement mis à jour! L'indicateur -f limite la sortie du journal hg aux ancêtres du répertoire de travail actuel, donchg log -f -l1
est plus proche de ce que vous voulez.Réponses:
Essayer:
Exemple:
la source
hg --debug id -i
si vous voulez la prise en charge des modèles, utilisezhg parent --template '{node}'
Ne pas utiliserhg log -l 1
, c'est le dernier ensemble de modifications du référentiel, pas l'ensemble de modifications de la copie de travail actuelle..
point comme révision.hg help revisions
ethg help revsets
a des raccourcis fous puissants comme ça.hg id -i
imprime uniquement le court (12 caractères) sous forme de l'identifiant de hachage global et depuishg identify
manque--template
afaics il n'y a pas moyen d'extraire simplement la révision et rien d' autre depuis la page man il imprime un résumé.Cela affichera le hachage long, avec un plus s'il y a des modifications non validées.
la source
Vous pouvez utiliser --template avec la commande parent, j'utilise ceci pour obtenir le long hachage:
la source
hg parents
c'est DÉPRÉCIÉ , bien que cela n'ait peut-être pas été le cas lorsque vous avez écrit cette réponse. S'il existe une fusion non validée, il existe deux révisions parentes .En résumant les réponses et leurs réponses, il semble que ce soit la meilleure façon d'imprimer l' identifiant unique (et non abrégé) de la version actuelle :
la source
.
(point) affiche uniquement le premier parent de deux parents du groupe de travail.Voir la documentation , les paragraphes «Les bases de la création de modèles» et suivants.
la source
lid
pourlog -l 1 --template '{node}\n'
atteindre exactement cela - imprimez l'ID de révision complet.hg --debug id -i
comme cela est dit ailleurs.La commande non-DEPRECATED la plus spécifique qui, en raison de la présence de,
--template
ne peut imprimer que les informations de révision si cette concision est requise (comme l'implique la question):hg log -l 1 -b . -T '{rev}:{node|short}\n'
Ou pour une forme longue unique de hachage:
hg log -l 1 -r . -T '{node}\n'
Le
-b .
oubranch(.)
(point pour le nom de la branche) signifie la branche actuelle du répertoire de travail et-r .
la révision actuelle du répertoire de travail, qui est documentée danshg help revsets
ethg help revisions
.Notez s'il y a une fusion non validée , le
.
(point) affiche uniquement le premier parent de deux parents du groupe de travail.la source
Comme d'autres l'ont souligné, ne l'utilisez pas
log -l
.Utilisez
hg log -r .
pour obtenir des informations détaillées, par opposition à l'utilisationhg id
dont la sortie est limitée et ne prend pas en charge les modèles. Vous pouvez également créer un petit alias commehere = log -r .
et utiliserhg here
. Si vous souhaitez uniquement utiliser le hachagehg log -r . --template '{node}\n'
.la source
Si TortoiseHg est utilisé, cliquez avec le bouton droit sur la ligne de révision dans le Workbench et sélectionnez "Copier le hachage" (selon la documentation ).
la source