Ветвящиеся и выносные головки в Mercurial - PullRequest
20 голосов
/ 07 апреля 2010

Я создал новую ветку с помощью этой команды: hg branch new_branch

После первой фиксации в новой ветке ветка по умолчанию становится неактивной.Если это нажать, то в центральном хранилище будет только одна голова, принадлежащая новой ветке.

Когда мой коллега отправляет свои коммиты на ветку по умолчанию, он получит эту ошибку:

pushing to ssh://...
searching for changes
abort: push creates new remote heads!
(did you forget to merge? use push -f to force)
* 1007Есть ли что-то плохое в принудительном толчке?Почему плохие удаленные головки плохи?

Как вы работаете удаленно на отдельных ветках и отправляете в один репозиторий?

Ответы [ 2 ]

18 голосов
/ 07 апреля 2010

Дистанционные головки плохи, потому что вы в основном стремитесь слиться с другим человеком. Это сообщение предназначено для предотвращения случайного введения людьми удаленных головок, предлагая им сначала объединиться перед нажатием.

В этом случае вы создали именованную ветвь, то есть намеренно представили и поделились новой головой, и вы можете отменить предупреждение как информационное. Используйте hg push --new-branch для принудительного запуска (или -f до версии 1.6).

4 голосов
/ 21 октября 2011

Помимо принудительной слияния с кем-то другим, удаленные головки также плохи, поскольку они могут вызвать путаницу . Люди, которые делают новый клон, не знают, с какой головы начинать, если их несколько. Что еще хуже: новый клон будет обновлен до новейшей головы в ветке по умолчанию, и эта голова меняется от одного момента к другому, когда люди нажимают изменения на разные головы.

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

...