środa, 20 lutego 2013

GIT vs SVN

Od pewnego (>2 lata) czasu korzystam aktywnie z systemów kontroli wersji. Na początku był to SVN, teraz jest to GIT. 

Po tym okresie mam parę wniosków które wydają mi się istotne :)

 Idea systemu kontroli wersji polega na zapisywaniu zmian w plikach komputerowych (w tym w plikach programistycznych zwłaszcza) w taki sposób aby użytkownik mógł bez problemu normalnie pracować, ale w przypadku błędu aby mógł powrócić do poprzedniej, poprawnej wersji danego pliku. Użytkownik może również powrócić do dowolnej poprzedniej wersji pliku. 



Główną różnicą pomiędzy oboma systemami kontroli wersji jest miejsce przechowywania kopii i informacji o zmianach czyli repozytorium. SVN jest systemem zcentralizowanym - oznacza to że repozytorium jest jedno (gdzieś na serwerze zwykle) a użytkownik kopiuje wersje plików na swój komputer, zmienia, a następnie ponownie przesyła na serwer. 

W tym modelu jakiekolwiek uszkodzenie centralnego repozytorium powoduje że nie można odtworzyć poprzednich wersji lub jest to bardzo utrudnione. 

GIT jest systemem zdecentralizowanych - oznacza że KAŻDY użytkownik posiada pełną kopię wszystkich plików i ich wszystkich wersji. GIT pozwala na stworzenie centralnego repozytorium plików, ale jest to jedna z wielu kopia, a nie źródło. 

Wnioski z pracy z obu systemami są dla mnie następujące - GIT jest znacząco lepszy w pracy grupy programistów lub osób pracujących na wspólnych plikach. SVN ma jedną zaletę - pozwala skopiować z repozytorium tylko jeden katalog, co w GIT-cie jest niemożliwe ze względu na ideę. 

Osobiście polecam programy z grupy tortoise (TortoiseGIT oraz TortoiseSVN) do pracy z repozytorium. Wygodne, ładne, eleganckie. Oba posiadają automatyczne porównywanie wersji dokumentów Microsoft Word (wymagany zainstalowany MS Word w wersji od 2007 w górę). 

Jak to można wykorzystać w firmie (zwłaszcza nie programistycznej) ?
  • Dokumenty sprzedażowe są przechowywane na serwerze (np. oferty). Jeżeli jest to sensownie zorganizowane (np: katalog klient\produkt\oferta-data.pdf) można przechowywać dokumenty na serwerze i dodatkowo repozytorium. Dzięki temu każda zmiana jest widoczna, wiadomo co kto i dlaczego zmienił - do każdej zmiany jest możliwość dołączenia krótkiego opisu (np. Klient prosił o nową wersję rozbudowaną o produkt Y). Dodatkowo mamy 2 kopie bezpieczeństwa - repozytorium i katalog oraz kopie repozytorium na komputerach pracowników. 
  • Agencje interaktywne, graficy, itp. mogą korzystać z wersjonowania plików do rejestrowania zmian w projektach zgodnie z wymaganiami klientów (wersja 1, wersja 2, wersja 2 po uwagach, itp). 
  • Firmy korzystające z usług programistów (tworzące oprogramowanie) powinny mieć własne repozytorium - po pierwsze z powodu kontroli nad kodem, po drugie mogą w ten sposób rejestrować postęp prac i zmiany. 
  • Firmy dla których podstawowym produktem jest oprogramowanie praktycznie nie mogą obejść się bez systemu kontroli wersji. 
  • W przypadku pracy z zewnętrznymi podmiotami (np. programiści na zlecenie, freelancerzy) warto skorzystać z zewnętrznego repozytorium. Osobiście polecam albo asemblę (posiada darmowy plan prywatny) albo bitbucket.

Ktoś kto raz skorzystał z repozytorium nie wyobraża sobie pracy bez tego świetnego, prostego i bezpiecznego narzędzia. 

Pozdrawiam, 
MWW







Brak komentarzy:

Prześlij komentarz