Hg - Найти теги, которые "покрывают" конкретную версию файла - PullRequest
6 голосов
/ 02 января 2012

Мы используем hg для управления источниками для большого проекта. Всякий раз, когда мы делаем релиз, мы помечаем версию в hg.

Теперь скажите, что я беру определенную ревизию (например, там, где я исправил ошибку). Я хочу знать, какие выпуски содержат это исправление, то есть какие теги "покрывают" эту ревизию.

Как мне найти это? В hg теги, похоже, относятся только к тегу changeset. Я помню, что в ClearCase каждый предок помеченной ревизии тоже был бы отмечен, есть ли способ увидеть эту информацию в hg?

Спасибо!

Ответы [ 3 ]

5 голосов
/ 03 января 2012

Revsets без каких-либо дополнительных расширений может дать вам что-то. как

hg log -r "id(hash):tip and tag()" или более короткая и приятная (возможно) версия hg log -r "descendants(hash) and tag()"

Как раз и пример укороченного revset из моего репо со слияниями после рассматриваемой ревизии

>hg glog -r "descendants(c9e3b41ec78f)"
@  changeset:   65:f202d72d6397
|  tag:         tip
|  parent:      63:c778bae76563
|  user:        Alex Bream
|  date:        Wed Nov 09 21:42:50 2011 +0600
|  summary:     2-9 яюыэюёЄ№■ фю 2769
|
| o  changeset:   64:625d08492555
| |  branch:      Cleanup
| |  parent:      62:eed6619dadb8
| |  user:        Alex Bream
| |  date:        Wed Nov 09 21:38:44 2011 +0600
| |  summary:     ╟рўшёЄър яю 1-1 155
| |
o |  changeset:   63:c778bae76563
|\|  parent:      61:e7ae9e5f725a
| |  parent:      62:eed6619dadb8
| |  user:        Alex Bream
| |  date:        Wed Nov 09 21:33:22 2011 +0600
| |  summary:     Merge with Cleanup
| |
| o  changeset:   62:eed6619dadb8
| |  branch:      Cleanup
| |  parent:      59:c9e3b41ec78f
| |  user:        Alex Bream
| |  date:        Thu Mar 03 19:19:34 2011 +0500
| |  summary:     ╟рўшёЄър яю 1-1 131
| |
o |  changeset:   61:e7ae9e5f725a
| |  user:        Alex Bream
| |  date:        Thu Mar 03 05:40:34 2011 +0500
| |  summary:     2-9 яю 2745
| |
o |  changeset:   60:1393fe759096
|\|  parent:      57:a38258cac9b8
| |  parent:      59:c9e3b41ec78f
| |  user:        Alexander
| |  date:        Thu Mar 03 04:59:22 2011 +0500
| |  summary:     Merge ё ўшёЄшыъющ
| |
| o  changeset:   59:c9e3b41ec78f
| |  branch:      Cleanup
| |  user:        Alexander
| |  date:        Thu Mar 03 04:54:11 2011 +0500
| |  summary:     ╟рўшёЄър яЁюыюу яюыэюёЄ№■
| |

И сравнение вывода двух форм revsets (в любом случае, один и тот же вывод)

потомки ()

>hg log -r "descendants(c9e3b41ec78f)" --template "{rev}:{node|short}\n"
59:c9e3b41ec78f
60:1393fe759096
61:e7ae9e5f725a
62:eed6619dadb8
63:c778bae76563
64:625d08492555
65:f202d72d6397

Определение прямого диапазона

>hg log -r "id(c9e3b41ec78f):tip" --template "{rev}:{node|short}\n"
59:c9e3b41ec78f
60:1393fe759096
61:e7ae9e5f725a
62:eed6619dadb8
63:c778bae76563
64:625d08492555
65:f202d72d6397
1 голос
/ 17 июля 2012

Это дает вывод, похожий на hg tags:

hg log -r "reverse(descendants(8bb6)) and tag()" --template "{tags}\t{rev}:{node|short}\n"
0 голосов
/ 02 января 2012

Вы можете использовать Ближайшее расширение , чтобы найти ближайший метку пересылки к вашей ревизии. Затем, в зависимости от вашего рабочего процесса, вы сможете легко определить, какой другой тег также содержит ваши изменения.

Вы также можете использовать следующее, чтобы напечатать последний обратный тег из текущей ревизии:

hg log -l 1 --template "{latesttag}\n"

А затем также выведите тег "cover".

...