Risposte:
Aggiorna al stiging
ramo e creane uno nuovo. Quindi chiudi il vecchio ramo.
In sintesi:
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
. Ad esempio: hg branch --force v3
. Ciò comporterà l' hg update v3
aggiornamento al nuovo v3
ramo, come desiderato.
stiging
prima della ramificazione, non ottieni una "fine libera"
Per i lettori futuri: con l' rebase
estensione, è possibile creare un nuovo ramo con lo stesso genitore stiging
e spostare l'intera cronologia del ramo su di esso, in questo modo:
hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging
Ciò presuppone che stiging
abbia un solo genitore. Ovviamente puoi semplicemente usare numeri di revisione espliciti invece.
Nota 1: se il ramo stiging
include le fusioni con altri rami, penso che questo li preserverà, purché staging
e stiging
abbia lo stesso genitore. Ma sicuramente ricontrollerei.
Nota 2: poiché questo modifica la cronologia, il vecchio ramo non scomparirà semplicemente dai repository clonati (consultare la rebase
documentazione). A meno che tutti non possano clonare di nuovo, potrebbe non essere una soluzione molto pratica per un grande gruppo.
Nota3 / Modifica (per gentile concessione di @JasonRCoombs): ora che le fasi sono standard in mercurial, rebase
si rifiuteranno di modificare i changeset che sono già stati inviati. O prendilo in giro cambiando la fase in bozza (con hg phases
), o lascia che il vecchio ramo rimanga dove si trova, e fai semplicemente una copia con nome appropriato (ad esempio, con `hg rebase --keep ').
hg convert
invece.
--keep
al comando rebase, che copierà invece di spostare le modifiche.
abort: can't rebase immutable changeset 11b1e2b7dc4f
. Nota che ho innestato changeets da un altro ramo in questo. Oltre a ciò, è diviso e unito gratuitamente.
.
per il tuo --dest
valore e il rebase assumerà automaticamente il nome del nuovo ramo.
Se hai dei changeset su di essa, dovrai usare l' estensione convert con una branchmap per rinominarla. Tutti dovranno quindi clonare il nuovo repository o rimuovere il vecchio ramo.
Questo modifica la cronologia ed è solo per utenti Mercurial avanzati. Non farlo se non sai cosa significa.
Se la stimolazione è solo locale, è possibile cambiarla in stadiazione con una combinazione di innesto e striscia . Inizia aggiornando il changeset dell'antenato in cui la stiging era divergente. Creare il ramo di gestione temporanea e innestare ogni commit dalla stigmatizzazione alla stadiazione. La stadiazione dovrebbe ora essere una copia della stigmatizzazione. Infine, distruggi la stigmatizzazione eliminando il suo primo 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}