В Mercurial, как увидеть теги только для набора ревизий вместо всех? - PullRequest
4 голосов
/ 23 декабря 2010

hg tags всегда показывает все теги, так как я могу получить только теги, которые указывают на конкретную ревизию и всех ее предков?

Реальный вариант использования заключается в том, что если я использую локальные теги для обозначения функций (или исправлений ошибок) в наборах изменений, и мне нужно выяснить совокупные функции / ошибки вплоть до определенной версии.

Одним из решений было бы добавление команды-оболочки, которая добавляет "-r" к tags. Тогда как лучше всего это реализовать? Использовать revsets, чтобы получить все наследственные обороты и отфильтровать теги?

Ответы [ 2 ]

5 голосов
/ 24 декабря 2010

Это должно сработать (требуется Mercurial 1.7):

hg log -r "ancestors(<rev>) and tag()"

, где <rev> - это хеш или локальный номер редакции. Однако пометка каждого исправления и функции кажется излишней.

Вместо тегирования вы можете просто следовать соглашению, в котором вы добавляете "bugfix: xyz" или "feature: abc" в ваши сообщения коммита. Затем вы можете извлечь все исправления и такие функции, как это:

hg log -r "ancestors(<rev>) and (keyword(bugfix) or keyword(feature))"

Сохраняйте теги для важных этапов или других изменений, которые имеют особое значение.

3 голосов
/ 23 декабря 2010

Если я вас правильно понимаю, вы хотите:

  • Указать ревизию
  • Отфильтровать журнал только по этой ревизии + всем ее предкам
  • Извлечь всетеги, которые находятся в этих наборах изменений

Вы можете сделать это, если можете ограничиться именами тегов:

hg log -r "ancestors(HASH)" --template "{tags}"
...