System kontroli wersji - wprowadzenie Rzeszów,2 XII 2010
System kontroli wersji System kontroli wersji (ang. version/revision control system) służy do śledzenia zmian głównie w kodzie źródłowym oraz pomocy programistom w łączeniu i modyfikacji zmian dokonanych przez wiele osób w różnych momentach. Wszędzie tam, gdzie nad jednym projektem pracuje wiele osób, zastosowanie znajduje system kontroli wersji. System, zainstalowany na serwerze, przechowuje pliki projektu. Programista, który chce wykonać poprawki lub zmiany w kodzie źródłowym, pobiera aktualny kod projektu z serwera. Po dokonaniu zmian w plikach, kod projektu jest przesyłany przez programistę ponownie na serwer. Oprogramowanie kontroli wersji scala pliki przesłane przez programistę z kodem przechowywanym na serwerze. Proces scalania jest niemal całkowicie automatyczny. Nawet, jeśli wielu programistów wykonało zmiany w projekcie i przesłało nowe wersje kodu na serwer w tym samym czasie, oprogramowanie kontroli wersji poprawnie scali wszystkie dokonane zmiany (być może w wielu plikach naraz, być może w niektórych plikach w wielu miejscach). Jedynie wykluczające się wzajemnie zmiany dotyczące dokładnie tego samego miejsca w jednym pliku nie mogą być rozstrzygnięte automatycznie. Wówczas potrzebna jest ingerencja jednego z programistów, który musi ręcznie wybrać jedną wersję wprowadzonych modyfikacji. Co ciekawe, takie kolizje w rzeczywistości są dość rzadkie (pod warunkiem, że poszczególni developerzy mają ściśle określone zadania). Opisany model pracy jest określany jako kopiuj-modyfikuj-scal (ang. copy-modify-merge). W modelu tym, poza specjalnymi przypadkami, nie występują blokady. Żaden z plików projektu nie jest zablokowany. Programista może pobrać kod całego projektu, i pracować nad dowolnym plikiem w dowolnej chwili. Nie musi czekać, aż któryś z kolegów zakończy pracę, czy wykona uaktualnienia. Programiści są wzajemnie niezależni.
System kontroli wersji Jednym z najprostszych systemów kontroli wersji jest RCS (Revision Control System), który operuje na pojedynczych plikach. Przykładowo historia zmian pliku o nazwie plik przechowywana jest w pliku plik,v. Bardziej zaawansowany jest system CVS (Concurrent Versions System), który umożliwia zarządzanie zmianami całego przedsięwzięcia. CVS został zaimplementowany pierwotnie jako nadbudowa nad RCS i wykorzystuje ten sam format plików wersji (pliki z przyrostkiem,v). CVS umożliwia m.in. współbieżną pracę wielu programistów, tworzenie odgałęzień (ang. branch), rozwiązywanie konfliktów wersji. CVS ma też pewne ograniczenia, np. metadane o plikach nie są wersjonowane, a zatwierdzanie zmian wielu plików nie jest atomowe (w przypadku np. awarii połączenia może zostać zatwierdzona tylko część zmian). Aby wyeliminować wady CVS powstał system Subversion, zwany również SVN. Subversion jest bardzo podobny w obsłudze do CVS, ale oferuje szereg udogodnień, takich jak atomowe transakcje, wersjonowanie zmian nazwy plików czy efektywne wersjonowanie plików binarnych. Do przechowywania zmian zastosowana została baza danych Berkeley DB.
System kontroli wersji Zmiany w stosunku do CVS: Historia zmian nazw katalogów i plików Brak historii wprowadzanych zmian nazw katalogów był jedną z najczęściej krytykowanych wad CVS. Subversion zapisuje nie tylko zawartość pliku oraz informacje czy dany plik istnieje, ale także położenie pliku w katalogach, jego kopie, zmiany nazw. Pozwala również zapamiętywać właściwości danego pliku lub katalogu np. flagi wykonywalności itp. Zmiany są transakcjami atomowymi Zmiany w kilku plikach lub katalogach odnoszą skutek tylko wtedy, gdy wszystkie modyfikacje zostały zakończone pomyślnie. W CVS możliwa była sytuacja, gdy część plików została zaktualizowana, a część nie, np. w przypadku zerwania połączenia sieciowego. Możliwość użycia serwera Apache Subversion może używać protokołu bazującego na HTTP WebDAV/DeltaV do komunikacji sieciowej, serwer webowy Apache zapewnia dostęp do sieci po stronie repozytorium. To daje Subversion przewagę nad CVS i wprowadza za darmo ważne funkcje takie, jak: uwierzytelnianie i autoryzację użytkowników, kompresję przesyłanych danych, oraz podstawowy dostęp do repozytorium. Dostępny samodzielny serwer Subversion umożliwia dostęp do repozytorium przez dedykowany serwer, niezależny od serwera http. Jest on uruchamiany jako usługa inetd, lub oddzielny demon. Oferuje on podstawowe uwierzytelnianie i autoryzację użytkowników. Umożliwia także tworzenie połączeń szyfrowanych. Szybkie tworzenie gałęzi i znaczników W odróżnieniu do CVS gdzie dodawanie gałęzi (branches) i znaczników (ang. tags) z powodu organizacji mogło być czasochłonne, w SVN operacje te bazują na szybkim kopiowaniu kopie zajmują małą, stałą przestrzeń. Pozostałe funkcje Własny protokół klient/serwer. Protokół umożliwia przesyłanie różnic w plikach od klienta do serwera i odwrotnie. Rozmiar przesyłanych danych przy zmianie pliku jest proporcjonalny do rozmiaru zmian, a nie pliku. Efektywna obsługa plików binarnych. Repozytorium przechowywane w bazie danych lub w systemie plików.
System kontroli wersji AnkhSVN TortoiseSVN
TortoiseSVN TortoiseSVN - klient systemu kontroli wersji SVN, przeznaczony dla użytkowników Windows. Integruje się z eksploratorem dodając nowe podmenu i wiele funkcji do obsługi SVN. TortoiseSVN jest nieoceniony przy prowadzeniu wszelkiego rodzaju projektów (c++, delphi, www, php) gdy pracujemy w grupie. Umożliwia połączenie się z repozytorium (musimy mieć skonfigurowany serwer) i wrzucenie aktualizacji naniesionych przez nas w projekcie lub pobranie aktualizacji z repozytorium dokonanych przez innych programistów. http://tortoisesvn.tigris.org/
TortoiseSVN -instalacja i konfiguracja Pobieramy aplikacje ze strony : http://tortoisesvn.tigris.org/ Instalacja przebiega w sposób standardowy Kolejne kroki: W dowolnym miejscu na dysku z menu wybieramy: SVN Checkout w celu utworzenia w tym miejscu Repozytorium.
TortoiseSVN -instalacja i konfiguracja Url: https://85.128.7.252:8443/svn/rezerwacje
TortoiseSVN -instalacja i konfiguracja Jeżeli wszystko przebiegło zgodnie z planem otrzymamy :
TortoiseSVN -instalacja i konfiguracja
TortoiseSVN -instalacja i konfiguracja
AnkhSVN AnkhSVN - plugin do Visual Studio, który jest klientem Subversion i pozwala na wykonywanie podstawowych operacji na repozytorium w trybie graficznym i do tego bez opuszczania Visual Studio. http://ankhsvn.open.collab.net/
AnkhSVN-instalacja i konfiguracja Pobieramy aplikacje ze strony : http://ankhsvn.open.collab.net/ Instalacja przebiega w sposób standardowy Kolejne kroki:
AnkhSVN-instalacja i konfiguracja
AnkhSVN-instalacja i konfiguracja Url: https://85.128.7.252:8443/svn/rezerwacje
AnkhSVN-instalacja i konfiguracja Po połączeniu jeżeli jest potrzeba potwierdzamy certyfikat. Następnie:
AnkhSVN-instalacja i konfiguracja
AnkhSVN-instalacja i konfiguracja
System kontroli wersji KONIEC Dziękuje za uwagę. Damian Leszczyński