Сделать другую ветку по умолчанию? - PullRequest
30 голосов
/ 24 марта 2011

У меня есть репозиторий Mercurial в Bitbucket и на моей локальной машине, оба являются зеркалами, в актуальном состоянии. Я создал тематическую ветку, отраженную в обоих репозиториях. Я сделал всю свою работу в ветви функций.

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

Я не думаю, что хочу слиться, и не должен ли я? Как я могу сделать это, чтобы и локальный, и удаленный не запутались?

Ответы [ 4 ]

25 голосов
/ 24 марта 2011

Просто объедините feature-branch в default, затем закройте feature-branch:

$ hg checkout default
$ hg merge feature-branch
$ hg commit
$ hg checkout feature-branch
$ hg commit --close-branch

Нет более чистого и разумного способа (о котором я знаю) «сделать feature-branch значением по умолчанию».

Одна вещь, которая была бы не так хороша, но вы могли бы сделать, это сделать коммит на default поверх feature-branch:

$ hg checkout feature-branch
$ hg branch default
$ hg commit

Но это оставило бы две головы в ветви default, что является неоптимальным.

19 голосов
/ 23 декабря 2011

Начиная с Mercurial 2.4, вы можете создать закладку с именем @, и Mercurial будет извлекать эту ревизию новых клонов.

Тем не менее, я бы все же попытался использовать default в качестве ветви, где происходит основная разработка. Это сделает наименьшее количество сюрпризов для разработчиков, уже привыкших к Mercurial - вики описывает стандартный способ использования веток в Mercurial.

Если вы следуете общепринятому совету использовать default в качестве основной ветви для разработки, то вам следует закрыть свою ветвь функций, прежде чем объединить ее:

$ hg update feature-branch
$ hg commit --close-branch -m "Feature done, merging into default branch"
$ hg update default
$ hg merge feature-branch
$ hg commit

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

$ hg merge --noninteractive --tool internal:local feature-branch
$ hg revert --all --rev feature-branch

вместо hg merge выше. Это гарантирует, что новый коммит в default будет выглядеть точно так же, как последний коммит в feature-branch.

9 голосов
/ 01 июня 2011

У меня получилось без объединения, закрыв ветку по умолчанию.

в рабочем каталоге моего репозитория разработки:

$ hg update default

$ hg commit --close

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

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

Было бы неплохо иметь название филиала.

DEV-имя_проект-version.x = по умолчанию

привет

1 голос
/ 25 марта 2016

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

hg revert --all --rev $ {1}

hg commit -m "Восстановление ветви $ {1} по умолчанию"

где $ {1} - номер ревизии или название ветки. Эти две строки на самом деле являются частью скрипта bash, но они отлично работают сами по себе, если вы хотите сделать это вручную.

Это полезно, если вам нужно добавить оперативное исправление в ветку релиза, но нужно собирать по умолчанию (до тех пор, пока мы не получим правильные инструменты CI и не сможем строить из веток, а позже и с ветками релиза)

...