2010-03-01 3 views
12

Wir verwenden TortoiseSVN in einer Teamumgebung. Wenn ich an einem größeren Feature arbeite, erstelle ich einen Feature-Zweig, arbeite dort für eine Woche, füge jeden zweiten Tag Änderungen aus dem Stamm in meinen Zweig ein und wenn das Feature fertig ist, füge ich es wieder in den Stamm ein.TortoiseSVN: Wie verzweige ich die Verzweigung zurück zur Amtsleitung, ohne die Arbeitskopie in die Amtsleitung zu wechseln?

Beim Zusammenführen, das tue ich immer folgendes:

  1. verpflichten, alles zu dem Zweig
  2. Schalter die gesamte Arbeitskopie auf Stamm, zu wechseln (meist zu löschen) Hunderte von Dateien
  3. Verwendung „ein Reintegrate branch "Option, die geänderten/neuen Dateien aus dem Zweig, die bereits auf der Festplatte waren vor 30 Sekunden
  4. verifizieren, dass der Code kompiliert
  5. commit to trunk

Das scheint mir ineffizient - ich erstelle eine Reihe von Dateien, lösche sie beim Wechsel in den Stamm und dann neu erstellen, wenn sie mit dem Trunk verschmelzen.

Gibt es eine andere Möglichkeit, eine Verzweigung mit Trunk mit TortoiseSVN zusammenzuführen, die ohne zwei separate Arbeitskopien effizienter wäre? (was in unserem Szenario nicht wirklich sehr effizient ist, da einige Abhängigkeiten absolute Pfade verwenden und ich sie manuell ändern muss, wenn ich von einer anderen Arbeitskopie kompilieren möchte)

+3

Können wir annehmen, dass die absoluten Pfade nicht geändert werden können?Alles, was einem Auschecken (oder Exportieren) in ein beliebiges Verzeichnis im Wege steht und einfach zu bauen ist, sollte man, wenn irgend möglich, handhaben, und in diesem Fall würde es einem erlauben, einen Stamm herumzuführen, in den man sich einfügen könnte – Murph

+1

Versuchen Sie, die Funktion "Merge Reintegrate" zu sehen, auf die hier verwiesen wird? http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-du-merge.html#tsvn-dug-merge-all – Amber

+0

Warum nicht 2 Kopien Ihres Projekts behalten, ich behalte einen Stamm und einen Zweig in meinem Eclipse-Arbeitsbereich Dann wird der Workflow zu einem Branch-Commit und einem anschließenden Re-Integrieren von Branch zu Trunk. Einfach! – PiersyP

Antwort

13

Sie können unmöglich in SVN zusammenführen und committen, ohne eine Arbeitskopie des Trunks (dh das Zusammenführungsziel). Dies ist keine Aktion, die direkt im Repository ausgeführt werden kann, da Dateien geändert werden. Vor der Übergabe müssen Sie überprüfen, ob sie ordnungsgemäß zusammengeführt wurden.

Also ich denke, Sie wollen im Grunde eine Schalter-und-merge Aktion (oder ein Schalter-and-Merge-reintegrieren). Soweit ich weiß, wird dieser Befehl nicht von SVN oder TortoiseSVN zur Verfügung gestellt, so dass Sie daran festhalten, wie Sie es beschrieben haben.

-2

Hier ist ein Auszug aus dem Buch SVN:

Sie werden eine Arbeitskopie von/trunk benötigen. Sie können einen solchen Befehl erhalten, indem Sie eine alte Stammarbeitskopie von einem beliebigen Ort auf Ihrer Festplatte herausholen oder den svn-Switch verwenden (siehe den Abschnitt "Traversing Branches").

+0

Die angenommene Antwort sagte ziemlich genau dasselbe vor 2 Jahren, aber enthielt eine Erklärung. – Martin

0

Ich behalte eine Arbeitskopie von beiden zu allen Zeiten.

Wenn Sie den Stamm unter dem Stamm und Zweig abchecken, dann haben Sie beide zur Verfügung, so dass Sie nicht hin und her wechseln müssen. Bewegen Sie sich einfach wie eine normale Dateistruktur auf und ab.

0

Ich weiß, dass ich für die Partei zu spät komme, aber eine Idee wäre, den subst Befehl verwenden, um ein virtuelles Laufwerk Punkt auf die aktive Arbeitskopie zu machen:

cd \myproject\trunk 
subst z: . 
... use the trunk ... 
cd \myproject\branchxy 
subst /d z: 
subst z: . 
... use the branch xy ... 

Auf diese Weise würde man einfach nutzen Der subst -erstellte Laufwerksbuchstabe in Ihren eingehenden externen Abhängigkeiten.

Verwandte Themen