2015-09-17 2 views
5

Можно ли перечислить теги только на определенной ветке? (Из командной строки предпочтительно)Как перечислить все теги в определенной отрасли Mercurial?

Например:

$ hg branch test1 
... (make some commits) 
$ hg tag mytag_on_test1_branch 

$ hg branch test2 
... (make some commits) 
$ hg tag mytag_on_test2_branch 
... (make some commits) 
$ hg tag mytag_on_test2_branch_2 

Теперь hg tags возвращается:

$ hg tags 
tip        5:34603c3a4107 
mytag_on_test2_branch_2   4:72db17d2170c 
mytag_on_test2_branch    2:09aed50d8b95 
mytag_on_test1_branch    0:d43c48c0e1d8 

Я хотел бы только, чтобы увидеть метки на ветке "test2", как это:

mytag_on_test2_branch_2   4:72db17d2170c 
mytag_on_test2_branch    2:09aed50d8b95 

Возможно ли это?

ответ

7

Как часто, ответ заключается в правильном использовании реверсов; они являются мощным инструментом, позволяющим ограничить диапазоны ревизий практически любой потребностью. См. hg help revsets.

В вашем случае мы также используем шаблоны вывода, чтобы показывать только теги, а не полный вывод журнала этих изменений. Таким образом, если вам нужны все теги THISBRANCH:

hg log --rev="branch(THISBRANCH) and tag()" --template="{tags}\n" 

Пример вывода для широко-меченого репо

hgsubversion>hg log -r "branch(stable) and tag()" -T "{tags}\n" 
1.5.1 
1.6.1 
1.6.2 
1.6.3 
1.7 
1.8 
1.8.1 
1.8.2 
+0

Спасибо! Однако это решение, похоже, выводит только первый тег в ветке, но не все из них. Любая идея, как это исправить? – johndodo

+0

В нем перечислены все теги для меня, которые относятся к этой точной ветке. Он исключает теги, которые являются предками, но не в той же ветви, что и THISBRANCH (например, в ветвях, из которых THISBRANCH был разветвлен). – planetmaker

+0

. Я обновил пример - когда я выполняю «hg log --rev =» branch (test2) и тег() "--template =" {tags} \ n "" Я получаю только один результат ('mytag_on_test2_branch'), другой (' mytag_on_test2_branch_2') отсутствует. – johndodo

Смежные вопросы