2010-06-09 2 views
2

Я разрабатываю централизованное веб-приложение, и у меня есть централизованный репозиторий Mercurial.Плохая идея заставить создание Mercurial удаленных голов (т. Е. Ветвей)?

Локально Я создал филиал в моем хранилище

hg branch my_branch 

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

abort: push creates new remote branch 'my_branch'! 
(did you forget to merge? use push -f to force) 

Я только что использовал push -f. Это плохо? Я ХОЧУ несколько филиалов в моем центральном удаленном репозитории, так как хочу: 1) создать резервную копию моей работы и 2) разрешить другим разработчикам развиваться вместе со мной в этой ветке.

Плохо или что-то иметь филиалы в моем удаленном репозитории или что-то в этом роде? Должен ли я не делать push -f (а если нет, что мне делать?)? Почему Джоэл сказал об этом в своем учебнике:

alt text http://grabby.info/3c0370f58efd4da29ad651cec9c14750.png

Иногда я сделал изменения в отрасли, толкали, перешел на другую ветку, и изменения, которые я сделал в этой ветке я переключаюсь были загадочно вернулся к предыдущей версии от нескольких коммитов назад. Может быть, это симптом форсирования толчка?

+0

проверить http://stackoverflow.com/questions/2099432/branching-with-mercurial-scm – someone

+0

создание новых удаленных * названных * ветвей в порядке, наличие нескольких головок для данной именованной ветки плохо (это то, что Джоэл предупреждает около). Я думаю, что последнее hg больше не требует -f. – tonfa

ответ

4

Мои подозрения в том, что другие с большим количеством времени может ответить лучше, но здесь что-то связано я нашел:

https://www.mercurial-scm.org/wiki/TipsAndTricks#Prevent_a_push_that_would_create_multiple_heads

Это связано с другой вариант (в частности, нарушение нажимной -f), но упоминает что-то в соответствии с тем, что вы спрашиваете:

Хотя простой «hg push» предупредит вас, если вы собираетесь создавать новые головы, это всего лишь предупреждение на стороне клиента, предназначенное для помощи/напоминания пользователи, которых они, возможно, забыли сначала слить.

Предполагая, что это точное утверждение, тогда вы совершенно в безопасности.

Обратите внимание, что у меня есть только базовые знания в Mercurial, поэтому не следует использовать как источник полной правды :).

+0

Поскольку в документации указано, что вы цитировали, мне кажется, что это вполне нормально для использования push -f и наличия удаленных ветвей. –

4

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

С Mercurial 1,6 (который будет выпущен в двух недель), вы будете в состоянии сделать

hg push --new-branch 

разрешить создание новых удаленных филиалов. Это безопаснее, так как --force отключает все защитные ограждения, тогда как --new-branch позволяет создать новую ветку.

+0

Полезно знать. Спасибо за публикацию. –

Смежные вопросы