Respostas:
Atualize para a stiging
ramificação e crie uma nova ramificação. Depois feche o ramo antigo.
Em suma:
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
--force
. Por exemplo: hg branch --force v3
. Isso resultará na hg update v3
atualização para o novo v3
ramo, conforme desejado.
stiging
antes de ramificação, você não obter um "ponta solta"
Para futuros leitores: Com a rebase
extensão, você pode criar uma nova ramificação com o mesmo pai stiging
e mover para ela todo o histórico da ramificação, assim:
hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging
Isso pressupõe que stiging
tenha apenas um pai. Claro que você pode usar números de revisão explícitos.
Nota 1: Se o ramo stiging
inclui mesclagens com outros ramos, acho que isso os preservará, desde que staging
e stiging
tenha o mesmo pai. Mas eu certamente checaria duas vezes.
Nota 2: Como isso edita o histórico, a ramificação antiga simplesmente não desaparece dos repositórios clonados (consulte a rebase
documentação). A menos que todos possam clonar novamente, talvez não seja uma solução muito prática para um grande grupo.
Nota 3 / Edit (cortesia de @JasonRCoombs): Agora que as fases são padrão em mercurial, rebase
se recusará a modificar conjuntos de alterações que já foram enviados. Ou engane-o, alterando a fase de volta para rascunho (com hg phases
), ou deixe o ramo antigo permanecer onde está e faça uma cópia com o nome apropriado (por exemplo, com `hg rebase --keep ').
hg convert
.
--keep
para o comando rebase, que copiará em vez de mover as alterações.
abort: can't rebase immutable changeset 11b1e2b7dc4f
. Observe que eu tenho enxertado conjuntos de alterações de outro ramo neste. Além disso, é dividido e mesclado gratuitamente.
.
como --dest
valor e a rebase assumirá o novo nome da ramificação automaticamente.
Se você possui conjuntos de alterações, precisará usar a extensão convert com um mapa da filial para renomeá-lo. Todos terão que clonar o novo repositório ou retirar o ramo antigo.
Isso modifica o histórico e é apenas para usuários avançados do Mercurial. Não faça isso se você não souber o que isso significa.
Se o stiging for apenas local, você poderá alterá-lo para estadiamento com uma combinação de enxerto e tira . Comece atualizando para o changeset ancestral onde a divergência foi divergente. Crie a ramificação temporária e enxerte cada confirmação, desde a classificação até a preparação. O teste agora deve ser uma cópia do stiging. Por fim, destrua o stiging retirando seu primeiro commit.
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
hg graft {first changeset in stiging}..{stiging head}