Mercurial объединить / удалить ветку - PullRequest
3 голосов
/ 15 июня 2011

Я пытаюсь выяснить, как использовать подход «Ветвление на функцию» в Mercurial, но, создав ветку для работы и объединив ее обратно по умолчанию, я не могу перенести мои изменения обратно в мой главный репозиторий. Что лучше всего сделать?

screenshot of TortoiseHg with a branch

Я создал ветку «Настройка датчика», проделал некоторую работу в этой ветке и затем слил ее обратно в стандартную. Продолжено с еще несколькими изменениями по умолчанию, и теперь я хочу зафиксировать это в моем главном репозитории. Но когда я пытаюсь, я получаю:

abort: push создает новые удаленные ветви: настройка датчика!
подсказка: используйте 'hg push --new-branch' для создания новых удаленных веток

Я не думал, что ветвление будет отображаться в главном репо, и что, объединяя его локально, я могу каким-то образом работать в ветке (или, возможно, в ветвях), а затем, когда я все проверил, передать его мастеру. Сделки рЕПО.

Должна ли отображаться ветвь настройки датчика? Неужели я думал, что увижу только дефолт на этом этапе? Но разве я не правильно понимаю инструменты? Должен ли я создавать удаленную ветку? В идеале я хотел бы иметь возможность открывать ветки для каждой функции и иметь 3 или 4 таких ветки, работающих одновременно (так работает моя компания), поэтому я хотел бы получить четкое представление о вещах сейчас.

Ответы [ 2 ]

5 голосов
/ 15 июня 2011

Технически вы можете просто зафиксировать новую ветку в главном репо, используя --new-branch.Как показано на скриншоте, на самом деле существует не новая ветвь с головой в топологическом представлении, а в представлении пространства имен, т.е. когда hg прерывает ваш толчок, он просто хочет, чтобы ваше явное подтверждение добавило новую ветвь (имя)в удаленное хранилище.

Однако для таких задач, как ваши - временные ветви функций - более распространенным рабочим процессом является не использование именованных ветвей, а анонимных / отмеченных закладками ветвей или отдельных клонов.Именованные ветви обычно используются для долгоживущих веток, таких как stable , legacy и так далее.Если вы создаете анонимную / добавленную в закладки ветку и объединяете ее, когда ее функция завершена, hg не будет жаловаться при нажатии.

Часто рекомендуемое чтение в этом контексте - Руководствона ветвление в Mercurial .

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

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

hg commit --close-branch -m 'Closing branch'
...