2010-12-03 3 views
3

У меня есть несколько репозиториев, которые были преобразованы из SVN и продвигаются вперед, мы хотим убедиться, что когда люди нажимают на репозиторий, они не могут создавать дополнительные главы. есть несколько крючков в TipsAndTricks wiki page, которые предотвращают нажатие, если есть несколько головок, но как я могу построить крюк, который предотвращает нажатие новых голов?Как создать ртутный крюк, который предотвращает появление новых голов?

Кажется, что правильный способ сделать это - сравнить количество голов от ревизии 0: родительский, а затем сравнить 0: подсказку, но я не могу найти способ сделать это. hg heads -r $HG_NODE показывает только количество головок после того, как нажата первая фиксация пользователя.

ответ

0

Используйте hg ci -m 'Closed branch feature-x' --close-branch, чтобы закрыть все, кроме одной головы, а затем нанести обычный крюк с одной головкой.

5

По умолчанию hg push предотвращает толкание дополнительных головок, требующих флаг -f. Вы можете написать расширение Mercurial, чтобы он игнорировал этот флаг, эффективно отключив нажатие новых головок.

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

+0

Я видел предотвращения несколько haeads представленного как общий крюк в нескольких местах. Его в советах и ​​трюках в вики и используется мозиллами и netbeans. Это похоже на доказательство того, что это не плохая идея. Если бы я начал новый проект, я бы использовал один из них. Но они не обрабатывают мои конвертированные репозитории так, как мне нужно. –

+0

Обучение людей сливаться перед нажатием не устраняет проблему. Кто-то еще всегда мог подтолкнуть что-то новое между вашим слиянием и вашим толчком. – Kylotan

+0

@ Kylotan: Тогда вы получите предупреждение о том, что вы нажимаете новую голову, и hg порекомендует вам вытаскивать и сливаться перед нажатием. Вам все равно придется использовать флаг '-f'. – tghw