2009-10-29 3 views
7

Ich bin ein Anfänger in SVN.I haben die SVN-Verzeichnisstruktur wie folgt aus:SVN - wie Änderung der Stamm auf alle Zweige beantragen

|-trunk 
    |-file1.php 
    |-file2.php 
|-branches 
    |-branch_1 
    |-file1.php 
    |-file2.php 
    |-branch_2 
    |-file1.php 
    |-file2.php 

Im Kofferraum ich die Haupt-Version meiner Anwendung haben. Ich habe zwei Zweige für verschiedene Clients, die die Änderungen nur in einigen Dateien haben. Wenn ich einen Kernfehler finde, repariere ich ihn im Kofferraum. Zum Beispiel habe ich das file1.php in trunk Verzeichnis geändert. Ich möchte Änderungen an den Dateien file1.php in allen Zweigen anwenden.

Ich bin ein wenig verwirrt. In der Version Control with Subversion habe ich die folgende Erklärung gefunden.

Das Repository von Subversion hat einen speziellen Entwurf. Wenn Sie ein Verzeichnis kopieren, müssen Sie sich keine Sorgen über die Repository wachsenden riesigen Subversion nicht wirklich irgendwelche Daten duplizieren. Stattdessen erstellt es ein neues Verzeichnis Eintrag, der auf eine vorhandene Struktur verweist.

So obwohl ich, dass, wenn befehle ich eine Änderung in der Datei trunk\file1.php es wird automatisch auf die anderen file1.php Dateien aplied werden, wie ich keine Änderungen vorgenommen haben, das dem in branches Verzeichnisdateien.

Wie kann ich Änderungen aus dem Stammverzeichnis auf alle Zweige anwenden? Ich versuchte svn merge wie diese zu verwenden:

svn merge -r 31:32 http://mysvnserver.com/project/branches/branch_1 

aber ich habe keine Änderungen

Antwort

10

Wenn Sie einen Wechsel von Stamm zu branch_1 anwenden möchten (svn diff -r 31:32 gibt alle Änderungen, die ich gemacht.) muss der Merge-Befehl angeben, wo das diff von, bekommen und dann ein Ziel geben Sie die Zusammenführung anzuwenden:

cd branch_1 
svn merge -r 31:32 http://mysvnserver.com/project/trunk . 
svn diff # confirm that the only diff is your change to file1.php 
svn commit 
+0

Vielen Dank. Das ist was ich brauche. –

0

Versuchen:

svn merge -r 31:32 http://mysvnserver.com/project/trunk branch_1 

wo branch_1 ist Ihr lokales Arbeitsverzeichnis der Branche. Das heißt, zuerst haben Sie die Quelladresse und dann das Ziel, das lokal sein muss.

2
cd workingcopy 
svn merge -r 31:32 http://mysvnserver.com/project/trunk branches/branch_1 
svn merge -r 31:32 http://mysvnserver.com/project/trunk branches/branch_2 
svn commit -m "Merged r32 into branches" 
Verwandte Themen