2009-10-29 15 views
7

Jestem początkujący w SVN.I mają strukturę katalogów SVN tak:SVN - jak zastosować zmiany wprowadzone w bagażniku do wszystkich oddziałów

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

W bagażniku mam główną wersję mojej aplikacji. Mam dwie gałęzie dla różnych klientów, które mają modyfikacje tylko w niektórych plikach. Kiedy znajdę jakiś podstawowy błąd, naprawiam go w bagażniku. Na przykład zmodyfikowałem katalog file1.php w trunk. Chcę zastosować zmiany w plikach o nazwie file1.php we wszystkich gałęziach.

Jestem trochę zdezorientowany. W Version Control with Subversion znalazłem następujące wyjaśnienie.

Repozytorium Subversion ma specjalny projekt . Kiedy kopiujesz katalog, nie musisz się martwić, że repozytorium rosnące w ogromnej ilości - Subversion nie powiela żadnych danych. Zamiast tego tworzy nowy katalog wpis, który wskazuje na istniejące drzewo.

Więc mimo, że kiedy popełnić zmiany w pliku trunk\file1.php zostanie automatycznie aplikowany do innych file1.php plików jak nie wprowadzać żadnych zmian do plików w branches katalogu.

Jak mogę zastosować zmiany z katalogu magistrali do wszystkich oddziałów? starałem się używać svn merge takiego:

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

ale nie robić żadnych zmian

Odpowiedz

10

Jeśli chcesz zastosować zmiany z tułowia do branch_1 (svn diff -r 31:32 zwrotu wszystkich zmian zrobiłem). komenda seryjnej musi określić, gdzie można uzyskać diff z, a następnie określ cel zastosować seryjnej do:

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

Dziękuję. Tego właśnie potrzebuję. –

0

Spróbuj:

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

gdzie branch_1 jest lokalnym katalogiem roboczym oddziału. Oznacza to, że najpierw masz adres źródłowy, a następnie miejsce docelowe, które musi być lokalne.

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" 
Powiązane problemy