2013-03-21 13 views
19

So lange Zeit Benutzer von SVN, aber ziemlich unerfahren in Branching/Tagging, und wenn ich habe ich vermute, dass ich es nicht wirklich richtig oder zu seinem vollen Potenzial.SVN-Strategie mit Verzweigungen und Zusammenführen von Änderungen von Stamm in Zweig

Ich habe meinen Stamm, den ich an das Hinzufügen neuer Funktionen usw. arbeite. Diese Codebasis wird in mehreren Websites verwendet, wo wir pro Projekt eine Verzweigung vom Stamm erstellen.

Jeder Zweig hat normalerweise projektspezifische Änderungen, und alles, was wir für wiederverwendbar halten, wird dem Stamm hinzugefügt und so eingerichtet, dass die Funktion für die verschiedenen Projekte ein- und ausgeschaltet werden kann.

Derzeit, wenn wir Änderungen am Stamm vornehmen und diese Änderungen in einem vordatierten Zweig möchten, muss ich bestimmte Revisionen durchgehen und manuell in den Zweig einbinden und sie erneut eingeben. Nicht ideal und einfach Dinge zu vermissen.

Also, meine Frage ... gibt es irgendeine Möglichkeit, meine Niederlassung mit ALLEN Änderungen aus dem Stamm zu aktualisieren, und damit umzugehen, als ob es ein Standard-Trunk-Update mit Konflikten war?

Ich habe gesehen, über die Wiedereingliederung des Zweigs in den Kofferraum, aber aufgrund der Art, wie ich in diesem Fall mit Zweigen bin, das ist nicht wirklich etwas, was ich tun möchte.

+0

Verwenden Sie Svn von der Befehlszeile oder verwenden Sie eine GUI wie TortoiseSVN? –

+5

Also, ich war so lange ein SVN-Benutzer, wie es schon ist. Und obwohl du mit SVN kämpfen kannst, damit es etwas von dem macht, was du willst, muss ich ehrlich sein: Git ist viel besser darin. Es ist genau das, worüber du sprichst (aber denke "noch mehr Zweige"). Wenn Sie viele Branch-Merging und Tracking von Dingen machen möchten, würde ich Ihren SVN-Repo in einen Git Repo konvertieren und von dort aus gehen. Sie werden glücklicher sein (Ich weiß, ich bin viel sicherer in der Erkenntnis, dass meine Patches überall angewendet werden, nachdem ich ein 10+ Jahre altes SVN-Projekt in git konvertiert habe) –

+0

Ich benutze eine Kombination von smartsvn (wahrscheinlich mehr davon) und der Befehlszeile – Horse

Antwort

22

Ja, es ist möglich. Grundsätzlich müssen Sie svn merge von einer sauberen Arbeitskopie Ihrer Filiale (einer ohne lokale Änderungen) laufen:

$ pwd 
/home/user/mybranch 
$ svn status # Does not display anything 
$ svn update # Make sure your local copy is up to date. 
Updating '.': 
At revision X. 
$ svn merge url/to/repository/trunk 
Updates, additions, deletions and conflicts. 
$ #handle conflicts. 
$ svn commit -m "Merging changes from the trunk". 

Siehe Keeping a Branch in Sync aus dem SVN-Buch.

Die erste Zusammenführung führt wahrscheinlich zu vielen Konflikten, besonders wenn sich der Zweig vor langer Zeit verzweigt hat, aber die letzten Zusammenführungen werden reibungslos verlaufen, besonders wenn Sie häufig zusammenführen.

+0

funktioniert perfekt !! danke – gnuyoga

+0

Ich tat das und nachdem, als ich versuchte, den Stamm von der brach, alle neuen Klassen aktualisiert von dem LKW waren in Konflikt. Habe ich etwas falsch gemacht? Oder muss es so sein? – Sertage