mercurial: конфликты ветвей с тегом

#mercurial #tags #branch

#mercurial #Теги #ветвь

Вопрос:

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

Ответ №1:

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

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

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

 $ hg log -r 'branch(foo)'
$ hg log -r 'tag(foo)'
  

Комментарии:

1. Это скрыто где-нибудь в документации mercurial?

Ответ №2:

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

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