System Kontroli Wersji

Transkrypt

System Kontroli Wersji
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