Mercurial: можно ли переименовать ветку?



теперь у нас есть ветвь" stiging", где" staging", похоже, гораздо лучше подходит для семантики. Какая хорошая стратегия для решения этой проблемы?

855   5  

5 ответов:

обновление stiging ветку и создать новую ветвь от него. Затем закройте старую ветку.

в итоге:

hg update stiging
hg branch staging
hg commit -m"Changing stiging branch to staging."
hg update stiging
hg commit --close-branch -m"This was a typo; use staging instead."
hg push --new-branch

для будущих читателей: с rebase расширение, вы можете сделать новую ветку с тем же родителем, что и stiging и переместите всю историю ветвей к нему, вот так:

hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging

это предполагает, что stiging имеет только одного родителя. Конечно, вы можете просто использовать явные номера ревизий вместо этого.

Примечание 1: Если филиал stiging включает слияния с другими ветвями, I думаю что это сохранит их, пока staging и stiging есть же родитель. Но я бы, конечно, перепроверил.

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

Note3 / Edit (любезно предоставлено @JasonRCoombs): теперь это этапы стандартные ртутные, rebase будет отказано в изменении наборов изменений, которые уже были выдвинуты. Либо одурачить его изменение фазы обратно на черновик (с hg phases), или пусть старая ветвь останется там, где она есть, и просто сделайте правильно названную копию (например, с "HG rebase --keep").

Если у вас есть изменений на нем, то вам придется использовать конвертировать расширение С картой ветвей, чтобы переименовать его. Затем всем придется клонировать новое РЕПО или снимать старую ветку.

сделайте новую ветку под названием "staging" и забудьте о другой...

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

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

hg update {SHA-1 of the ancestor changeset}
hg branch staging
hg graft {first changeset in stiging} ... {stiging head-1} {stiging head}
hg strip {first changeset in stiging}
hg push --new-branch

Comments

    Ничего не найдено.