Podstawy SVN Drukuj
Ocena użytkowników: / 0
SłabyŚwietny 
Wpisany przez Patryk yarpo Jar   
sobota, 09 października 2010 18:10

Subversion (znany również jako SVN) – system kontroli wersji, który powstał w celu zastąpienia CVS. Z założenie SVN jest w większości przypadków funkcjonalnie zgodny ze swoim poprzednikiem, z kompatybilności zrezygnowano tam, gdzie było to niezbędne do wprowadzenia nowych rozwiązań. SVN jest wolnym i otwartym oprogramowaniem na licencji Apache. (wikipedia.org)

W tym artykule postaram się przybliżyć zasady działania tegoż systemu.

Co to jest?

Jest to zestaw narzędzi (klient i serwer) pozwalających na zarządzanie wersjami plików należących do projektu (hisotoria zmian pliku, cofanie zmian do dowolnej rewizji, informacje o autorze zmian itp.). Użytkownik posiada klienta SVN. Najczęściej na zdalnym serwerze trzymane są tzn. repozytoria.

 

Jak to działa?

Załóżmy, że mamy repozytorium o nazwie "test". Jest ono umieszczone na serwerze SVN, gdzieś w internecie.

Mamy też dwóch programistów: Zdzisia i Franka. Obaj na swoich komputerach mają zainstalowane oprogramowanie pozwalające na korzystanie z repozytoriów SVN (klienty SVN).

Aby uprościć sprawę załóżmy jeszcze, że cały projekt składa się z 1 pliku, o nazwie `plik_projektowy.php'.

Schemat ogólny działania svn

Powyższy rysunek pokazuje, podstawowe funkcje jakich będą używać programiści:

commit - jest to wysłanie pliku lokalnego na serwer SVN.

update - jest to pobranie pliku z serwera do naszego lokalnego projektu.

 

Prosta historyjka mówiąca, jak wygląda codzienna praca z kodem pliku `plik_projektowy.php':

1. Franek i Zdzisiu przychodzą do pracy. Obaj otwierają swój projekt i wykonują polecenie svn update. Na ich komputerach lokalnych pojawia się najnowasza wersja (rewizja HEAD) pliku.

2. Franek dzisiaj ma spotkanie, więc nie będzie programował. Zdzisiu robi wiele zmian w kodzie pobranego pliku. Pod koniec dnia, gdy już wszystko działa i jest przetestowane, Zdzisiu wysyła ten plik na serwer używając polecenie `svn commit'. Jutro Zdzisiu idzie na urlop, ale na Franka czeka już plik z wprowadzonymi zmianami na serwerze SVN.

3. Franek przychodzi rano do pracy. Bez żadnych informacji od Zdzisia po prostu wykonuje `svn update' i widzi, że nowsza wersja `plik_projektowy.php' została pobrana z serwera. Może porównać wersję aktualną z poprzednią, aby dowiedzieć się jaki zmiany nastąpiły. Dzisiaj Franak dokona swoich zmian i wrzuci plik (commit) na serwer.

 

Oczywiście, SVN pozwala na więcej niż tylko takie prawie-równoległe prace nad jednym plikiem. Chodziło mi tu jednak o pokazanie samej idei i dwóch najprostszych poleceń: commit (wysyłanie na serwer) i update (pobieranie z serwera). Nie opisałem tu jeszcze równie  ważnego na początku `checkout' czy `import', a także celowo pominąłem możliwość konfliktów. O tym napiszę w następnych artykułach.

Jak z tego korzystać?

Klient

Jest wiele narzędzi. Na Windowsa najpopularniejszym klientem niezależnym od IDE jest Tortoise. Można także być przekozakiem i używać SVN z wiersza poleceń.

W przypadku pracy z Netbeansem, Eclipsem, czy Visual Studio można pobrać odpowiednią wtyczkę pozwalającą zintegrować dane IDE z klientem SVN.

Serwer

Ja najczęśćiej korzystam z google code. W internecie można znaleźć wiele repozytoriów, w których za darmo można trzymać kod.

Jeśli chciałbyś zainstalować swój własny serwer SVN na Windowsie to polecam VisualSVN Server.

 

Co dalej

W najbliższym czasie mam zamiar napisać jeszcze trochę o SVN, zarówno o klientach, jak i o serwerach a także o zasadach na jakich się używa tego mechanizmu. Jeśli ktoś nie chciałby czekać, to polecam: