Systemy Kontroli Wersji zarzadzanie źródłami Marcin Gryszkalis dagoon@math.uni.lodz.pl Wydział Matematyki Uniwersytetu Łódzkiego Łódź 2003 Systemy Kontroli Wersji p.1/39
VCS a SCM Systemy Kontroli Wersji p.2/39
VCS a SCM VCS = Version Control System SCM = Software Configuration Management VCS SCM Systemy Kontroli Wersji p.3/39
Systemy SCM Zarzadzanie kodem źródłowym (VCS) Systemy Kontroli Wersji p.4/39
Systemy SCM Zarzadzanie kodem źródłowym (VCS) Zarzadzanie zmianami i obsługa błędów Systemy Kontroli Wersji p.4/39
Systemy SCM Zarzadzanie kodem źródłowym (VCS) Zarzadzanie zmianami i obsługa błędów Zarzadzanie budowaniem Systemy Kontroli Wersji p.4/39
Systemy SCM Zarzadzanie kodem źródłowym (VCS) Zarzadzanie zmianami i obsługa błędów Zarzadzanie budowaniem Obsługa procesów tworzenia (zatwierdzanie itp.) Systemy Kontroli Wersji p.4/39
Systemy SCM Zarzadzanie kodem źródłowym (VCS) Zarzadzanie zmianami i obsługa błędów Zarzadzanie budowaniem Obsługa procesów tworzenia (zatwierdzanie itp.) Zarzadzanie projektem Systemy Kontroli Wersji p.4/39
Systemy VCS Repozytorium plików Systemy Kontroli Wersji p.5/39
Systemy VCS Repozytorium plików Śledzenie zmian Systemy Kontroli Wersji p.5/39
Systemy VCS Repozytorium plików Śledzenie zmian Odtwarzanie stanów Systemy Kontroli Wersji p.5/39
Systemy VCS Repozytorium plików Śledzenie zmian Odtwarzanie stanów Regression bugs Systemy Kontroli Wersji p.5/39
Systemy VCS Repozytorium plików Śledzenie zmian Odtwarzanie stanów Regression bugs Współpraca wielu autorów (programistów) potrzebujacych dostępu do repozytorium Systemy Kontroli Wersji p.5/39
Jak działa system VCS Systemy Kontroli Wersji p.6/39
CVS: login login - logowanie do repozytorium konieczne przy zdalnym dostępie może bazować na różnych metodach autentykacji (pserver, GSSAPI) $ cvs -d :pserver:user@example.pl:/home/cvsroot login Logging in to :pserver:user@example.pl:/home/cvsroot CVS password: $ cvs -d :pserver:user@example.pl:/home/cvsroot checkout foo Systemy Kontroli Wersji p.7/39
CVS: login login - logowanie do repozytorium konieczne przy zdalnym dostępie może bazować na różnych metodach autentykacji (pserver, GSSAPI) $ export CVSROOT=:pserver:user@example.pl:/home/cvsroot $ cvs login Logging in to :pserver:user@example.pl:/home/cvsroot CVS password: $ cvs checkout foo Systemy Kontroli Wersji p.7/39
CVS: checkout checkout - pobranie pliku/projektu z repozytorium można operować na calych drzewach katalogów lub tzw. modułach można operować na różnych wersjach pliku update - pobranie pliku z repozytorium (uaktualnienie) Systemy Kontroli Wersji p.8/39
CVS: commit commit - zapisanie zmian w repozytorium czasami określane jako "check in" automatycznie zwiększa numer wersji oczekuje komentarza Systemy Kontroli Wersji p.9/39
Wersje pliki sa w różnych wersjach (ang. revision) aplikacje sa w różnych wydaniach (ang. release) Systemy Kontroli Wersji p.10/39
CVS: diff diff - porównanie różnych wersji pliku domyślnie porównuje lokalna kopię z aktualna wersja w repozytorium Systemy Kontroli Wersji p.11/39
CVS: log log - historia zmian danego pliku wyswietla liste zmian (komentarzy, które zostały podany podczas operacji commit) Systemy Kontroli Wersji p.12/39
CVS: annotate annotate - zawartość pliku, z oznaczeniem kto co zrobił czasami oznaczane jako blame Systemy Kontroli Wersji p.13/39
Gałęzie Jeden projekt może być rozwijany w kilku wydaniach jednocześnie np. jadro Linuxa: 2.2.x, 2.4.x, 2.5.x możliwość wielokrotnego rozdzielania gałęzi możliwość łaczenia gałęzi Systemy Kontroli Wersji p.14/39
Wydania - tagi Oznaczenie konkretnego momentu w życiu projektu Pozwala odnosić się do konkretnego wydania Pozwala wygodnie rozgałęziać tag HEAD - oś rozwoju Systemy Kontroli Wersji p.15/39
Słowa kluczowe Specjalne wzorce podmieniane w czasie operacji zapisu (commit) $Id$ - charakterystyczny identyfikator $Id: actions.txt,v 1.9 2003/04/10 01:22:55 mg Exp $ $Date$ - data zapisu wersji $Author$ - autor (kto zapisał) $Revision$ - numer wersji Systemy Kontroli Wersji p.16/39
Dostępne systemy VCS i SCM Systemy Kontroli Wersji p.17/39
Systemy VCS Open Source: RCS, CVS, Subversion Pół-komercyjne: BitKeeper, Perforce Komercyjne: SCCS, Microsoft SourceSafe, Forte Code Management Software, Rational ClearCase, Borland StarTeam Inne: VMS Filesystem Systemy Kontroli Wersji p.18/39
SCCS Source Code Control System Stary komercyjny system VCS Obecnie znaczenie raczej historyczne CSSC - Odpowiednik z rodziny GNU http://cssc.sourceforge.net Systemy Kontroli Wersji p.19/39
RCS Revision Control System Klasyczny system kontroli wersji OpenSource, Licencja - GPL Bezpośredni dostęp do plików wersji Tylko lokalny Bazuje na blokadach http://www.gnu.org/software/rcs/rcs.html Systemy Kontroli Wersji p.20/39
CVS Concurrent Versions System OpenSource, Licencja - GPL Format plików "prawie" zgodny z RCS "Concurrent" - pozwala na jednoczesne wprowadzanie zmian przez wiele osób http://cvshome.org Systemy Kontroli Wersji p.21/39
Subversion Zaprojektowany jako następca CVSa OpenSource, Licencja - Apache/BSD-style Dużo rozszerzeń względem CVSa Cały czas w trakcie intensywnego rozwoju http://subversion.tigris.org Systemy Kontroli Wersji p.22/39
BitKeeper Komercyjny system kontroli wersji Udostępnia możliwość darmowej obsługi projektów OpenSource Jadro Linuksa http://bitkeeper.com Systemy Kontroli Wersji p.23/39
Perforce Komercyjny, nowoczesny SCM Używany przez: SAP, Nvidia, SGI Możliwość darmowego wykorzystania przy projektach OpenSource (m.in. OpenWatcom) http://www.perforce.com Systemy Kontroli Wersji p.24/39
Microsoft SourceSafe Komercyjny VCS Standard dla narzędzi MS Oparty na współdzielonym katalogu Microsoft zaleca - nie przekraczać 3GB Nie obsługuje stref czasowych http://msdn.microsoft.com/ssafe/ Systemy Kontroli Wersji p.25/39
Forte Code Management Software Komercyjny produkt Sun Microsystems Dawniej Sun TeamWare, oparty na SCCS Kompletny system SCM http://wwws.sun.com/software/(...) Systemy Kontroli Wersji p.26/39
Rational ClearCase Komercyjny kompletny SCM Wspiera standard UCM (Unified Change Management) Prawdopodobnie jeden z najsilniejszych SCM wogóle Bardzo duże wymagania sprzętowe (serwer) http://www.rational.com/products/clearcase/ Systemy Kontroli Wersji p.27/39
Borland StarTeam Komercyjny kompletny SCM http://www.borland.com/starteam/index.html Systemy Kontroli Wersji p.28/39
System plików VMS System plików ze wsparciem dla kontroli wersji Dostępny w systemach VMS, także OpenVMS (dla platform VAX i Alpha) Obejmuje wszystkie działania w systemie http://www.openvms.org Systemy Kontroli Wersji p.29/39
Wady i Zalety: cvs, snv, bk Systemy Kontroli Wersji p.30/39
CVS - cechy Zalety Dojrzały system Bardzo szerokie wsparcie, integracja z narzędziami Standard Wady Problemy z plikami binarnymi i nie-ascii Brak obsługi rename Systemy Kontroli Wersji p.31/39
Subversion - cechy Wersjonowanie katalogów, rename, symlinks Atomic commits Apache/WebDAV jako podstawa komunikacji sieciowej Algorytmy obsługi plików binarnych (także diff!) Łatwo parsowalne wyjście Wsparcie dla plików tekstowych nie-ascii (UTF-8 i inne) Systemy Kontroli Wersji p.32/39
BitKeeper - cechy Hierarchiczne repozytoria Changesets Rollback (nazwy, zawartość) Triggery Dostępny na większości platform (klient?) Sumy kontrolne Systemy Kontroli Wersji p.33/39
CVS - narzędzia Systemy Kontroli Wersji p.34/39
CVS - klienci command-line SmartCVS (Java, zamknięty, darmowy w wersji "community") WinCVS (GTK, GPL) TortoiseCVS (tylko Windows, GPL) pluginy Systemy Kontroli Wersji p.35/39
CVS - klienci www Bonsai ViewCVS (Python) CVSWeb Systemy Kontroli Wersji p.36/39
CVS - inne cvsup (klient i serwer) CVS-NT (serwer) Systemy Kontroli Wersji p.37/39
Pytania? Systemy Kontroli Wersji p.38/39
Prosper Prezentacja wykonana przy użyciu pakietu prosper dla systemu L A T E X http://prosper.sourceforge.net Systemy Kontroli Wersji p.39/39