2013-02-20 5 views
16

In einem mercurialen Repo ist der "Standardzweig" sehr veraltet bis zu dem Punkt, wo es keinen Sinn mehr macht, die Änderungen von "Entwickeln" einzufügen ", eine benannte Verzweigung, die über die neueste bereitgestellte Version der Anwendung verfügt.Mercurial - Schließen Sie den Standardzweig und ersetzen Sie ihn durch einen benannten Zweig als neuen Standard

Anstatt standardmäßige Entwicklung zu entwickeln, wie kann ich die aktuelle Standardverzweigung schließen und dann eine neue Standardverzweigung mit dem Kopf von develop erstellen?

Ich habe ein paar andere Fragen und Antworten gesehen, die ähnlich sind, vielleicht die gleichen, aber ich habe immer noch Schwierigkeiten zu verstehen, wie das funktionieren sollte.

Danke!

+0

alternativ könnten Sie 'update' auf Standard und' merge' mit entwickeln, aber bevor Sie die Zusammenführung begehen, machen Sie es zu einer genauen Kopie von entwickeln. – Edward

+0

Das würde tatsächlich funktionieren, aber wie kann ich das tun? – kgx

Antwort

24

Wenn default hat weichen etwas von develop und Sie wollen default genau die gleichen wie develop nach der Zusammenführung, benötigen Sie einen etwas anderen Satz von Befehlen von dem, was Edward gab dir (dies wird auch funktionieren, wo develop ein direkter Nachkomme ist von default).

hg update -C default 
hg -y merge --tool internal:fail develop 
hg revert --all --no-backup -r develop 
hg resolve --all --mark 
hg commit -m "merge updating default to current develop" 

Dies bedeutet, dass alle Konflikte zu einer nicht aufgelösten Zusammenführung führen. Sie kehren dann alles, um die gleiche wie auf der develop Zweig (ohne Backup, so dass Sie nicht viele .orig Dateien übrig bleiben).

+0

Tim das hat perfekt funktioniert. Danke für Ihre Hilfe! Indem ich sowohl deine Antwort als auch Edwards durchgegangen bin, habe ich gerade viel über hg gelernt. – kgx

+0

Dies ist eine bessere Lösung! Vielen Dank! – Edward

+0

Großartig, danke –

2

Basierend auf Ihrem Kommentar, dass es kein Erfordernis, den Zweig zu schließen, ist hier eine Reihe von Schritten, die den Default-Zweig im Einklang mit der Entwicklung von Zweig erhalten sollen:

  1. hg update default
  2. hg merge --tool internal:other - zu fusionieren, während der Zweig entwickeln privilegieren
  3. hg diff -r develop - vergleichen mit entwickeln, um sicherzustellen, dass Sie eine exakte Kopie haben
  4. hg commit -m "merge updating default to current develop"

Sobald Sie fertig sind, sollten Sie einen aktualisierten Standard haben, der den Entwicklungszweig widerspiegelt und sie wieder synchronisiert.

+0

Edward danke für die Antwort. Ich habe Ihren Prozess getestet und in Schritt 2 folgendes Ergebnis erhalten: abort: branch 'default' hat einen Kopf - bitte füge mit einer expliziten rev ein. In meinem Repo gibt es mehr als 2 Köpfe aufgrund mehrerer anderer aktiv benannter Zweige. Wie auch immer, diese anfängliche Lösung hat den Ball klar ins Rollen gebracht, also nochmals vielen Dank.Auch das hg diff -r ist ein nützlicher Befehl, den ich vorher nicht gesehen habe. – kgx

0

Ich denke, es ist besser, ein Konzept in Tortoise zu verwenden, um zu erklären, wie es funktioniert.

  • hg update Zweig entwickeln
  • den Kopf des Standardzweiges wählen, und wählen Sie verschmilzt mit lokalen
  • dann alle Änderungen von Merge-Ziel (andere) wählen verwerfen und damit in der Entwicklung zusammengeführt wird Verzug, ohne dass die Entwicklung zu beeinflussen
  • dann verzweigen vom Kopf auf dem Standard der Entwicklung verwenden hg branch default, Standard Neustart wieder