mercurial: ветка конфликтует с тегом - PullRequest
6 голосов
/ 16 апреля 2011

Я создал ветку и тег с тем же именем: 0.2.0. Я столкнулся с некоторыми проблемами при слиянии, но сумел их преодолеть, используя -r и предоставив явную ревизию. Так что это не мой вопрос, что делать. Скорее я хотел бы знать: предлагается ли иметь разные имена для ветки и тега, когда создается новая версия? Существуют ли стандартные имена для этих тегов и веток?

Ответы [ 2 ]

8 голосов
/ 19 апреля 2011

Я бы пометил код с номерами версий, как вы, например, 1.0, 2.0 и так далее. Для веток обслуживания я бы использовал 1.x, 2.x и т. Д.

В этом случае тег 1.1 будет сделан для ветви 1.x, а набор изменений 1.0 является точкой ветвления для ветви 1.x. Его нет в ветке, поскольку вы создаете ветку 1.x только тогда, когда вам нужно сделать релиз исправления 1.1.

Наконец, вы можете использовать revset language для различения тега и ветви:

$ hg log -r 'branch(foo)'
$ hg log -r 'tag(foo)'
4 голосов
/ 16 апреля 2011

За возможным исключением default в Mercurial нет стандартных имен для веток или тегов. Ваша схема именования веток / тегов будет зависеть от процесса разработки.

Я не думаю, что использование одного и того же имени для именованной ветви и тега - хорошая идея. Как правило, вы можете выполнить hg update <name>, и если <name> соответствует либо названной ветви, либо тегу, Mercurial разрешит имя и доставит вас туда. Но если у вас есть как ветка, так и тег с одним и тем же именем, вы не сможете провести различие между ними и приведете вас к одному. Конечно, вы могли бы указать ревизию в явном виде, но это отрицает удобство использования имен.

...