Зачем нужен флаг --new-branch? - PullRequest
5 голосов
/ 05 августа 2011

Разве это не нормальный рабочий процесс?

[default] $ hg branch foo

[foo] $ [... some commits ...]

[foo] $ hg update default

[default] $ hg merge foo

[default] $ hg commit -m "merged foo"

[default] $ hg push
abort: push creates new remote branches: foo!
(use 'hg push --new-branch' to create new remote branches)

Какой в ​​противном случае идеальный способ сделать ветвление → объединение → проталкивание?

Ответы [ 3 ]

6 голосов
/ 05 августа 2011

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

Однако случай толкания новой именованной ветви концептуально отличается от толкания новой головки в той же ветке. Многие рабочие процессы (включая мой) выполняют каждую задачу в отдельной именованной ветви. Опция --new-branch позволяет перемещать новую ветвь, отклоняя при этом новые головки в существующих ветвях. Это также отличается (как вы видели), потому что это необходимо, даже если новая ветвь не создает новую голову (из-за слияния).

По моему личному мнению, новые ветки должны быть разрешены по умолчанию, но разработчики Mercurial предпочитают иначе.

3 голосов
/ 05 августа 2011

Это разовая вещь.Просто используйте --new-branch при первом нажатии на (новую) ветку.Это нормально.

Любой другой толчок может оставаться как hg push, без --new-branch флажка.

0 голосов
/ 05 августа 2011

Это зависит от того, для чего используется ветка.

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

После того, как вы закончите, вам придется потратить некоторую работу, чтобы отслеживать усилия других людей, которые могли внести изменения в ветку по умолчанию

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...