Wstęp do systemów kontroli wersji
Transkrypt
Wstęp do systemów kontroli wersji
KOŁO NAUKOWE INFORMATYKÓW SYSTEMY KONTROLI WERSJI – CZ.1 16 XII 2009 OPRACOWAŁ: PRZEMYSŁAW PARDEL Katedra Informatyki, Uniwersytet Rzeszowski 2009 Agenda System kontroli wersji CVS SVN Praca z SVN i Visual Studio Narzędzia Tworzenie repozytorium Dodawanie Solucji do repozytorium Dodawanie plików do repozytorium Otwieranie projektu z repozytorium Lock-owanie i od-lock-owanie pliku System kontroli wersji 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. Systemy kontroli wersji można podzielić na scentralizowane, oparte na architekturze klient-serwer (np. CVS, Subversion) - istnieje jedno centralne repozytorium, z którym wszyscy użytkownicy systemu synchronizują swoje zmiany rozproszone, oparte na architekturze P2P (np. BitKeeper, Code Co-op, svk, Git) - pozwalają na prowadzenie równoprawnych, niezależnych gałęzi, które można dowolnie synchronizować ze sobą nawzajem, np. poprzez e-mail (Code Co-op) Rola kontroli wersji Zarządzanie kodem źródłowym w trakcie realizacji projektu jest jednym z najważniejszych aspektów, które mogą decydować o powodzeniu lub porażce przedsięwzięcia. System do składowania i obsługi procesu tworzenia kodu źródłowego powinien być stale dostępny, utrzymywany i wykorzystywany na co dzień. Rola kontroli wersji cd… Podstawowym zadaniem systemu kontroli wersji jest: składowanie kolejnych wersji kodu źródłowego, umożliwienie jednoczesnej pracy wieloosobowym zespołom programistycznym, minimalizując konflikty zmian kodu, a także łatwe odwoływanie się do dowolnej wersji kodu. Taki system działa jednocześnie jako kopia zapasowa oraz jako archiwum wszystkich zmian kodu. CVS CVS CVS (ang. Concurrent Versions System) to popularny system kontroli wersji udostępniany na licencji GPL. Został stworzony do pracy grupowej nad kodem programów lub innych projektów realizowanych w zapisie elektronicznym. CVS zbudowany jest w architekturze klient/serwer. Od początku lat 90. XX wieku CVS jest wykorzystywany jako narzędzie pracy grupowej w wielu projektach programistycznych, których współpraca opiera się na wykorzystaniu Internetu m.in. całe systemy operacyjne jak FreeBSD czy NetBSD oraz wielu mniejszych przedsięwzięciach. Stopniowo zastępowany przez bardziej niezawodny Subversion. SVN SVN Subversion (znany również jako SVN) - system kontroli wersji, który powstał w celu zastąpienia CVS. Funkcjonalnie jest z nim zgodny w większości przypadków, z kompatybilności zrezygnowano tylko tam, gdzie było to niezbędne. SVN jest wolnym oprogramowaniem na licencji Apache. Strona domowa Subversion http://subversion.tigris.org/ SVN … 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ń. Podział kodu na moduły Subversion zaprojektowano w architekturze klient–serwer. W celu ominięcia niektórych problemów CVS kod został podzielony na moduły. Aplikacje zewnętrzne mogą się z nimi komunikować za pomocą dobrze opisanych interfejsów. Praca z SVN i Visual Studio Narzędzia TortoiseSVN – SVN klient i serwer http://tortoisesvn.tigris.org/ AnkhSVN – plugin do Visual Studio http://ankhsvn.open.collab.net/ Tworzenie repozytorium W wybranej lokalizacji (Folder) Przeglądanie repozytorium Dodawanie Solucji do repozytorium Dodawanie Solucji do repozytorium cd… Solucja w repozytorium Dodawanie plików do repozytorium Dodawanie plików do repozytorium cd… Dodawanie plików do repozytorium cd… Otwieranie projektu z repozytorium Lock-owanie plików Lock-owanie plików Od-lock-owanie pliku Dziękuję