Blog webdeveloperski Patryk yarpo Jar

Systemy kontroli wersji: podstawy SVN

Autor wiadomości Lipiec 23, 2015

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. (tyle nam mówi 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 (historia 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'.

TortoiseSVN - schemat ogólny działania systemów kontroli wersji

TortoiseSVN - 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ę najnowsza 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?

Komentarze (0) Trackbacks (1)

Leave a comment