Comment trouvez-vous le parent d'un nommé mercurial branche?
À un certain point dans le temps, vous avez une mercurial branche nommée, nous allons l'appeler, par défaut, et vous créez une branche nommée par défaut, nous allons l'appeler, foo, et de vous faire quelques révisions sur le foo. Ce travail ressemble à ceci:
hg update default
hg branch foo
hg commit -m "created branch foo"
# work, work
hg commit
# work work
hg commit
Pendant ce temps d'autres pays s'engage sur par défaut. Maintenant, quelqu'un d'autre a dit de faire un peu de travail sur le foo, et ils veulent voir si et peuvent être fusionnées à partir de foo parent de la branche. Si ils savaient que foo est venu de défaut, ils peuvent exécuter:
hg merge --preview default
mais ils ne savent pas où foo est venu. Ils pourraient exécuter:
hg glog
ou le feu jusqu'à tortoisehg et trace la ligne foo parent, mais est-il une commande ils pouvaient courir que voudrais juste leur dire que le parent de la branche de foo?
Vous devez vous connecter pour publier un commentaire.
Merci pour le revset exemples. J'ai trafiqué autour et a trouvé cette solution que j'aime bien:
qui permet d'imprimer la révision que la première s'engager sur le foo branche a été basé sur. Vous pouvez regarder pour la direction générale (ou l'absence de celui-ci indiquant la branche par défaut) dans cet ensemble de modifications et qui est le parent de la branche de foo (au moins la façon dont le parent branche est définie dans la question).
Mais j'ai ce sentiment tenace...les parents() peut retourner plus d'un ensemble de modifications. Pourrait la première s'engager sur une branche jamais avoir deux parents? Je ne peux pas penser comment cela pourrait se produire.
Vous pouvez utiliser revsets pour trouver cette information, à condition que vous utilisez Mercurial v1.6.0 ou plus tard. Par exemple:
cela permettra d'imprimer une seule révision, la branche "point" de votre branche.
hg id -br 'max(ancestors(BRANCH) and not branch(BRANCH))'
En supposant que vous avez Mercurial v1.7 ou plus tard, cela peut être fait avec un revset.
hg log -r "ancestor(<changeset>, <changeset>)"
où
changeset
peut être une branche, une étiquette, une révision de l'id ou la révision de hachage.Ce sera imprimée, le plus grand ancêtre commun des deux révisions.
Si il n'y a pas d'ancêtre commun, alors le résultat est vide.
hg log -r "ancestor(???, foo)"
foo
a été créé à partir (dans votre exemple, il a étédefault
. Donc vous l'utiliserancestor(default, foo)
. Si vous ne savez pas où elle était ramifié, alors vous devriez essayer la réponse de @listes.Basé sur @krupan de réponse, je suis venu avec les éléments suivants:
Cela permettra d'imprimer uniquement le nom de la mère de la branche.
--rev "revset expression"
spécifie un revset à l'aide d'un revset expression.branch()
sélectionne toutes les révisions de la branche.min()
sélectionne la première révision de la révision de la plage.parents()
sélectionne les parents de la révision de la plage..
indique que la révision en cours. Sinon, vous pouvez spécifier toute révision de nom.--template "{branch}\n"
spécifie un modèle personnalisé qui affiche seulement le nom de la branche.