Wie richtig ich verzweigen post-commit und den Stamm in svn wiederherstellen?

StackOverflow https://stackoverflow.com/questions/148902

  •  02-07-2019
  •  | 
  •  

Frage

Ich habe einige Commits, dass ich beschlossen habe, nach der Tat, werden mehr Zweig zu arbeiten dann Arbeit Stamm. Wie kann ich den Zweig erstellen und den Stamm zurückkehren, während nach wie vor gewährleistet Verschmelzung später nicht schmerzhaft ist?

Ist es so einfach, wie der aktuellen Stamm zu einem Zweig kopieren und den Stamm zurückkehrt? Oder wird dies später Kopfschmerzen erstellen?

War es hilfreich?

Lösung

ich denke, Philips Methode so etwas wie die folgenden sein würde, die letzte „gute“ Revision bei 100 war unter der Annahme, und Sie sind jetzt bei 130, den neuen Zweig zu erstellen:

svn copy -r100 svn://repos/trunk svn://repos/branches/newbranch
svn merge -r 100:130 svn://repos/trunk svn://repos/branches/newbranch

Beachten Sie die Idee ist, die Änderungen in diesen Revisionen zu erhalten, so dass Sie sie zurück Stamm anwenden können.

Stamm zurückkehren möchte:

svn merge -r130:100 .
svn ci -m 'reverting to r100 (undoing changes in r100-130)' . 

(Es würde keine Rolle, in welcher Reihenfolge Sie diese in durchgeführt, so dass Sie Stamm zurückkehren konnten, bevor die Verzweigung zu schaffen.)

Dann könnte man auf den neuen Zweig wechseln Sie in der Repo erstellt:

svn switch svn://repos/branches/newbranch workdir

Andere Tipps

Um ehrlich zu sein, kopiere ich meine Änderungen aus, kehrt Stamm, Zweig, dann meine Änderungen an die Niederlassung begehen. Der Hauptgrund, einfache Zusammenführung wird später (wenn Sie später aus dem Stamm am Verzweigungspunkt mit dem Zweig zusammenführen, die Zusammenführung eine revert Ihrer ersten Änderungen enthält).

Dies ist möglicherweise nicht die „richtige“ Art und Weise, wie Sie immer Revisionen überspringen können beim Zusammenführen, aber es ist in der Regel viel weniger Kopfschmerzen für mich später. Haftungsausschluss:. Ich bin keine SVN-Guru, so kann es einfacher für mich sein, weil ich es falsch mache - aber ich verwende svn ziemlich viel

Es ist nichts falsch mit Philipps-Methode folgen, außer dass es einige „cruft“ in der Revisionshistorie lässt. Wenn Sie sie für Ordnung willen entfernt wollte, und die Revisionen bei HEAD sind Sie sie aus dem Repository, indem Sie diese Anweisungen .

Update: Philipps Methode ist besser als derjenige für die Gründe in der Frage vorgeschlagen, erklärte er. Mine und Methoden Philip wären ähnlich, außer dass insead von dem Stamm zurückkehrt ich von der Revisionshistorie Entfernen der Revisionen vorschlagen. (Wie gesagt, kann dies nur geschehen, wenn alle Revisionen, die Sie im HEAD des Endlagers sind entfernen möchten.)

Ich habe nicht verfügbar SVN hier, aber das ist, wie ich würde versuchen, es zu tun:

, um den Punkt in der Geschichte bestimmen, wo Sie schlechte Sachen begonnen begehen (sagen Revision „100“, während Sie bei „130“ sind)

svn copy trunk branch # create your branch while preserving history
svn copy trunk@100 trunk #replace current revision with revision 100  

Dies sollte die schlechte Geschichte umgehen, ohne einen Reverse-merge Hinzufügen (tatsächlich werden Sie die Geschichte des Stammes zwischen 100 und 130 unter Umgehung aber immer Sie einen Link zu dieser Geschichte in der Branche und Stamm zugreifen, während die rev zwingen wird immer noch die Ausbeute korrekte Geschichte)

Dann

svn switch branch workdir

Dies sollte funktionieren, wenn Sie wollen, um vollständig die Änderungen vom Stamm zu entfernen. Wenn es kleinen sind Sie behalten möchten können Sie Kirsche sie von Ast zu Stamm wieder holen (wenn Sie SVN 1.5 verwenden, es aufzuspüren Punkte verschmelzen und unechte Konflikte vermeiden)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top