Odpowiedzi:
Rozgałęzianie w Subversion jest ułatwione przez bardzo lekkie i wydajne narzędzie do kopiowania.
Rozgałęzianie i tagowanie są w rzeczywistości takie same. Wystarczy skopiować cały folder z repozytorium do innego miejsca w repozytorium za pomocą svn copy
polecenia.
Zasadniczo oznacza to, że to zgodnie z konwencją oznacza kopiowanie folderu - niezależnie od tego, czy jest to kopia zapasowa, tag, gałąź czy cokolwiek innego. W zależności od tego, jak chcesz myśleć o rzeczach (zwykle w zależności od tego, jakiego narzędzia SCM używałeś w przeszłości), musisz skonfigurować strukturę folderów w repozytorium, aby obsługiwać twój styl.
Wspólne style mają mieć kilka folderów na górze repozytorium o nazwie tags
, branches
, trunk
, etc. - który pozwala na kopiowanie całych trunk
(lub sub-zestawy) do tags
i / lub branches
folderów. Jeśli masz więcej niż jeden projekt, możesz zreplikować tego rodzaju strukturę w ramach każdego projektu:
Przyzwyczajenie się do tej koncepcji może chwilę potrwać, ale działa - po prostu upewnij się, że ty (i twój zespół) przestrzegacie konwencji, których zamierzacie użyć. Dobrze jest też mieć dobrą konwencję nazewnictwa - coś, co mówi ci, dlaczego gałąź / tag został utworzony i czy nadal jest właściwe - rozważ sposoby archiwizacji nieaktualnych gałęzi.
svn cp
używa tanich kopii, nie kopiuje rzeczywistych plików podczas rozgałęziania. Zobacz svnbook.red-bean.com/en/1.1/ch04s02.html
Utwórz nowy oddział za pomocą svn copy
polecenia w następujący sposób:
$ svn copy svn+ssh://host.example.com/repos/project/trunk \
svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH \
-m "Creating a branch of project"
svn switch svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH .
(jeśli chcesz zmienić bieżące zamówienie na nową gałąź) lub svn checkout svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH
(jeśli chcesz mieć nową gałąź w oddzielnym katalogu), aby rozpocząć pracę na nowo utworzonej gałęzi.
--parents
opcjisvn copy
!
-m
opcję, pojawi się komunikat „Lubię to” svn: E155010: Path '/home/constantine/someDirectory/svn+ssh:https:/myhost.com/svn/dir1/dir2/trunk/dir3/dir4/dir5' does not exist
. Z -m
tym mówi svn: E205009: Local, non-commit operations do not take a log message or revision properties
. (Zamieniłem adresy, ale one istnieją, oprócz ofc, nowego katalogu gałęzi i całej ścieżki + adresu URL, który SVN z jakiegoś powodu scalił się w błędzie) .
svn cp /trunk/ /branch/NEW_Branch
Jeśli masz jakieś lokalne zmiany w bagażniku, użyj Rsync
do synchronizacji zmian
rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch
rsync
w ten sposób. svn cp
skopiuje również wszelkie lokalne zmiany.
Załóżmy, że chcesz utworzyć gałąź z nazwy pnia (jako „TEST”), a następnie użyj:
svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST
Zwykle skopiowałbyś go do svn + ssh: //host.example.com/repos/project/branches/mybranch, abyś mógł przechowywać kilka oddziałów w repozytorium, ale twoja składnia jest poprawna.
Oto kilka porad dotyczących konfiguracji układu repozytorium .
Najlepsza wskazówka dla nowych użytkowników SVN; może to trochę pomóc w szybkim uzyskiwaniu poprawnych adresów URL.
Uruchom, svn info
aby wyświetlić przydatne informacje o bieżącym wyrejestrowanym oddziale.
Adres URL powinien (jeśli uruchomisz svn w folderze głównym) dać adres URL, z którego chcesz skopiować.
Aby również przejść do nowo utworzonego oddziału, użyj svn switch
polecenia:
svn switch http://my.repo.url/myrepo/branches/newBranchName
Jeśli nawet planujesz połączyć swój oddział, gorąco polecam, abyś spojrzał na to:
Słyszę, że Subversion 1.5 buduje więcej śledzenia scalania, nie mam z tym doświadczenia. Mój projekt jest na 1.4.x, a svnmerge.py to ratowanie życia!
Poniżej znajdują się kroki, aby utworzyć gałąź z pnia za pomocą TortoiseSVN w maszynie z systemem Windows. To oczywiście wymaga zainstalowania klienta TortoiseSVN.