Подтвердить что ты не робот

Сделать другую ветку по умолчанию?

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

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

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

4b9b3361

Ответ 1

Просто слейте 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, которая является субоптимальной.

Ответ 2

С Mercurial 2.4 вы можете создать закладку с именем @, а Mercurial проверит, что новые клоны новой версии.

Однако я все равно попытаюсь использовать default как ветку, где происходит основное развитие. Это приведет к тому, что разработчики уже привыкли к Mercurial - wiki описывает стандартный способ использования веток в 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.

Ответ 3

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

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

$ hg update default

$ hg commit --close

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

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

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

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

рассматривает

Ответ 4

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

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

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

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

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