Назад | Перейти на главную страницу

Как вы обрабатываете ветку по умолчанию в Mercurial?

У нас есть репозиторий с двумя именованными ветками в нем: dev и production. Также есть default ветка, которую мы не используем. К сожалению, всякий раз, когда люди клонируют репозиторий, он автоматически помещает их в default, и у нас возникают проблемы, потому что люди непреднамеренно соглашаются на это.

Есть ли способ удалить default ветвь, или отключите ее, или установите Mercurial так, чтобы клоны автоматически запускались на dev филиал?

Этот ответ уже устарел: теперь вы можете добавить @ закладка и Mercurial 2.4 и более поздние версии автоматически проверят его на наличие нового клона. Ваши пользователи должны будут внимательно следить за тем, чтобы @ закладка, тем не менее, указала на головку ветки, которую они хотят.


Вы не можете сделать другую ветку default ветку, под которой я подразумеваю, что вы не можете сказать Mercurial, что хотите branch-X для проверки в новом клоне. Вы всегда должны делать default ветка ветка, которую пользователи хотят оформить. Это описано в вики.

Иногда люди пытаются удалить default филиал. Это можно сделать, не создавая его в первую очередь:

$ hg init repo
$ cd repo
$ hg branch dev
$ hg commit -m "Ha, no default branch!"

Когда нет default филиал присутствует, hg clone проверит самый последний набор изменений. Это плохая идея поскольку этот набор изменений изменяется каждый раз, когда что-то помещается в репозиторий. Итак, если у вас есть dev и prod в репо, то новый клон проверит «случайный» набор изменений в зависимости от того, где была сделана последняя фиксация. Это еще более сбивает с толку, чем учить людей default означает «обычная ветка, в которой тебе надо работать по умолчанию».

В ртутная документация есть несколько примеров обработчиков precommit, и один, по иронии судьбы, проверяет имя ветки. В этом примере он проверяет соответствие регулярному выражению. Вы можете настроить его, чтобы убедиться, что имя не "по умолчанию".

Это не может помешать запуску клонов в ветке «по умолчанию», но, по крайней мере, с этой ловушкой никто не может поместить какой-либо код в ветку «по умолчанию».

Есть ли причина, по которой вы не можете просто заниматься разработкой в ​​Default, и когда он будет выпущен в производство, вы затем разделить его на Производство?

ОБНОВИТЬ: учитывая ваш запрос, пробовали ли вы использовать Именованные филиалы явно в ваших командах?