Плохая идея форсировать создание удаленных головок Mercurial (т.е. филиалов)? - PullRequest
2 голосов
/ 09 июня 2010

Я занимаюсь разработкой централизованного веб-приложения, и у меня есть централизованное хранилище 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 (а если нет, что мне делать?)? Почему Джоэл говорит это в своем уроке:

альтернативный текст http://grabby.info/3c0370f58efd4da29ad651cec9c14750.png

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

Ответы [ 2 ]

4 голосов
/ 15 июня 2010

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

С Mercurial 1.6 (выйдет через две недели) вы сможете сделать

hg push --new-branch

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

4 голосов
/ 09 июня 2010

Я подозреваю, что другие, у которых больше времени, могут ответить лучше, но вот что я нашел:

https://www.mercurial -scm.org / вики / TipsAndTricks # Prevent_a_push_that_would_create_multiple_heads

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

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

Если предположить, что это точное утверждение, тогда вы совершенно уверены в этом.

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

...