In Mercurial, wie Tags für nur eine Reihe von Revisionen statt alle zu sehen?
-
12-10-2019 - |
Frage
hg tags
zeigt immer alle Tags, so wie kann ich nur die Tags bekommen, dass Punkt auf eine bestimmte Revision und alle seine Vorfahren?
Der reale Anwendungsfall ist, dass, wenn ich lokale Variablen Merkmale zu bezeichnen (oder Bug-Fixes) auf Changeset, und ich brauche die kumulativen Funktionen / Bugs, um herauszufinden, bis eine bestimmte rev.
Eine Lösung wäre ein Wrapper-Befehl werden, indem die „-r“ zu tags
hinzufügt. Was ist dann der beste Weg, es zu implementieren? Verwenden revsets alle Vorfahren Umdrehungen zu erhalten und die Tags filtern?
Lösung
Dies sollte den Trick (erfordert Mercurial 1.7):
hg log -r "ancestors(<rev>) and tag()"
wo <rev>
ist die Hash-oder lokale Revisionsnummer. Allerdings scheint Overkill jeden Bugfix und Feature-Tagging.
Statt Tagging, können Sie nur eine Konvention folgen, wo Sie setzen „Bugfix: xyz“ oder „Feature: abc“ in der Commit-Nachrichten. Anschließend können Sie extrahieren alle Fehlerbehebungen und Features wie folgt aus:
hg log -r "ancestors(<rev>) and (keyword(bugfix) or keyword(feature))"
Halten Sie Tags für wichtige Meilensteine ??oder andere Änderungen, die eine besondere Bedeutung haben.
Andere Tipps
Wenn ich Sie richtig verstehe, wollen Sie:
- Geben Sie eine Revision
- Filter das Protokoll nur, dass changeset + alle seine Vorfahren Auszug
- Alle Tags, die in diesen Differenzmengen sind
Sie können das tun, wenn Sie sich auf Tag-Namen begrenzen:
hg log -r "ancestors(HASH)" --template "{tags}"