Spis treści: (ukryj)

  1. 1. Tworzenie prostego repozytorium ze zdalnym dostępem - notatki
  2. 2. Co oznaczają katalogi branches, tags i trunk w repozytorium?
    1. 2.1 Jak tworzyć rozgałęzienia

1.  Tworzenie prostego repozytorium ze zdalnym dostępem - notatki

svnadmin create --fs-type fsfs /path/to/svntest (źródło)

ssh-keygen -t dsa

scp -p key.pub remoteUsername@remoteHost:/home/remoteUsername/.ssh/authorized_keys

TortoiseSVN: svn+ssh://remoteUsername@remoteHost/path/to/svntest/projectName/trunk
or: svn+ssh://PuttySessionName/usr/local/repos

2.  Co oznaczają katalogi branches, tags i trunk w repozytorium?

Wspomniane w tytule katalogi branches (rozgałęzienia), tags (etykiety) i trunk (pień, trzon) są w rzeczywistości po prostu konwencją, należącą do dobrej praktyki korzystania z repozytoriów SVN. Nie są bowiem one w najmniejszej mierze "magiczne" — programy obsługujące SVN nie traktują ich w wyjątkowy sposób, więc nie mają one technicznie żadnych cech szczególnych.

Zgodnie z powszechnie przyjętą praktyką, omawianym katalogom nadaje się następujące znaczenie:

trunk
katalog, w którym przechowywana jest bieżąca wersja kodu (bądź innych danych, do których składowania postanowiliśmy wykorzystać SVN).
branches
w tym katalogu przechowywane są boczne gałęzie kodu, które chcemy z jakichś powodów oddzielić od głównego pnia i rozwijać równolegle. W sensie formalnym każda taka gałąź do podkatalog katalogu branches, którego nazwa jest nazwą rozgałęzienia, a zawartość (w momencie rozgałęziania) jest kopiowana z katalogu trunk.
tags
tutaj przechowywane są dodatkowe wersje kodu, które chcemy z pewnych względów oznaczyć jakąś nazwą (bardziej wymowną niż suchy numer rewizji repozytorium), a jednocześnie nie będące rozgałęzieniami (branches) — w tym sensie, że umieszczanego tu kodu nie należy modyfikować (są to tylko zamrożone obrazy repozytorium).

Warto też wspomnieć, że w przypadku, gdy w jednym repozytorium chcemy przechowywać kilka projektów (lub podprojektów), strukturę trunk-branches-tags zakłada się zwykle w katalogu każdego z projektów, natomiast nie zakłada się jej wtedy w katalogu głównym (ang. root) repozytorium.

2.1  Jak tworzyć rozgałęzienia

Jeśli chcemy założyć nowe rozgałęzienie, stosujemy komendę svn copy, np.

$ svn copy http://svn.example.com/repos/calc/trunk \
           http://svn.example.com/repos/calc/branches/newbranch

zakłada rozgałęzienie newbranch w katalogu rozgałęzień (branches) projektu calc.

Przy zakładaniu rozgałęzień często przydaje się także komenda svn switch. Pozwala ona przełączyć naszą lokalną wersję repozytorium (working copy) tak, by zapisywała się w innej niż trunk gałęzi repozytorium zdalnego. Przykładowem sytuacji, w której warto ją wykorzystać jest przypadek, kiedy decyzję o wprowadzeniu rozgałęzienia podjęliśmy już po wprowadzeniu pewnych zmian do plików lokalnych (i zmiany te chcemy wrzucić do tejże nowej gałęzi). W takich okolicznościach stosuje się zwykle sekwencję podobną do:

$ svn copy http://svn.example.com/repos/calc/trunk \
           http://svn.example.com/repos/calc/branches/newbranch
$ svn switch http://svn.example.com/repos/calc/branches/newbranch
$ svn commit  
Źródła: SVN Best Practices, O'Reilly 1, O'Reilly 2, O'Reilly 3, O'Reilly 4.