Wir haben jetzt einen "Stiging"-Zweig, wobei "Staging" semantisch viel besser passt. Was ist eine gute Strategie für den Umgang mit dieser Situation?
Antworten
Zu viele Anzeigen?Aktualisierung der stiging
Zweig und erstellen Sie einen neuen Zweig davon ab. Schließen Sie dann den alten Zweig.
Zusammengefasst:
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
Für zukünftige Leser: Mit dem rebase
Erweiterung können Sie einen neuen Zweig mit demselben Elternteil wie stiging
und verschieben Sie den gesamten Zweigverlauf dorthin:
hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging
Dies setzt voraus, dass stiging
hat nur ein Elternteil. Natürlich können Sie stattdessen auch einfach explizite Revisionsnummern verwenden.
Anmerkung 1: Wenn die Abzweigung stiging
umfasst Zusammenführungen mit anderen Zweigen, I denken dass sie dadurch erhalten werden, solange staging
y stiging
denselben Elternteil haben. Aber ich würde das auf jeden Fall noch einmal überprüfen.
Hinweis 2: Da dies die Historie bearbeitet, wird der alte Zweig nicht einfach aus geklonten Repositories verschwinden (siehe die rebase
Dokumentation). Wenn nicht jeder neu klonen kann, ist das für eine große Gruppe vielleicht keine sehr praktische Lösung.
Note3/Edit (mit freundlicher Genehmigung von @JasonRCoombs): Nun, da Phasen sind in Mercurial Standard, rebase
verweigert die Änderung von Changesets, die bereits gepusht wurden. Entweder Sie täuschen es, indem Sie die Phase wieder auf Entwurf zurücksetzen (mit hg phases
), oder lassen Sie den alten Zweig bleiben, wo er ist, und erstellen Sie einfach eine richtig benannte Kopie (z.B. mit `hg rebase --keep').
Wenn Sie Changesets darauf haben, müssen Sie die Erweiterung umwandeln mit einer Branchmap, um sie umzubenennen. Jeder muss dann das neue Repo klonen oder den alten Zweig entfernen.
Dies verändert die Historie und ist nur für fortgeschrittene Mercurial-Benutzer geeignet. Tun Sie dies nicht, wenn Sie nicht wissen, was das bedeutet.
Wenn stiging nur lokal ist, können Sie es in staging ändern mit einer Kombination aus Pfropfung y Streifen . Beginnen Sie mit der Aktualisierung auf den Vorgänger-Änderungssatz, von dem stiging abgewichen ist. Erstellen Sie den Staging-Zweig und übertragen Sie jede Übertragung von stiging auf staging. Staging sollte nun eine Kopie von stiging sein. Zuletzt zerstören Sie stiging, indem Sie seine erste Übertragung entfernen.
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