Narędia kontroli wersji Subversion Łukas Krak Akademia Górnico-Hutnica im. Stanisława Stasica w Krakowie, Wdiał Informatki, Elektroniki i Telekomunikacji Katedra Elektroniki www.wsn.agh.edu.pl
Problem Projektowanie jest procesem iteracjnm, a każdą iteracją wiąże się pewna wersja wniku w nasm prpadku dokumentu elektronicnego. Pojawia się naturaln problem arądania plikami, gd: rośnie ilość wersji danego pliku rośnie ilość ludi edtującch te same pliki rośnie ilość plików Cora cęściej nad jednm projektem pracuje stab ludi, któr edtują cora więcej plików tworąc ich kolejne wersje, które musą bć e sobą snchroniowane. 2
Rowiąanie? 3
Sstem kontroli wersji Sstem kontroli wersji (ang. version/revision control sstem) to estaw narędi powalając śledić mian dokonwane w dokumentach elektronicnch pre wiele osób w różnch momentach. Sstem kontroli wersji są najbardiej ropowsechnione w inżnierii oprogramowania, powalając programistom na modfikację i łącenie wielu gałęi kodu. Build and release management sstem Issue/defect tracking sstem Version control sstem 4
Architektura Sstem kontroli wersji dieli się na scentraliowane i roprosone. Sstem scentraliowane posiadają jedno repotorium, którm łącą się klienci (użtkownic) i snchroniują swoje mian (architektura klient-serwer). Prkład sstemów scentraliowanch: CVS Subversion Visual SourceSafe Sstem roprosone mogą nie posiadać centralnego repotorium i powalają użtkownikom na prowadenie równoprawnch gałęi projektu, które można e sobą dowolnie snchroniować (architektura peer-to-peer). Są to np: Baaar Git Mercurial BitKeeper 5
Repotorium i kopia roboca Repotorium (ang. repositor) to miejsce w którm prechowwane są dokument w uporądkowanej postaci, wra historią ich mian. Najcęściej jest to specjalna baa danch na dedkowanm serwere, e ściśle określonmi regułami dostępu. Kopia roboca (ang. working cop) to kopia lub inacej obra pewnego stanu repotorium (ang. snapshot). Użtkownic wprowadają swoje mian w lokalnch kopiach robocch, które potem snchroniowane są repotorium. 6
Interakcja klient - serwer http, https albo dedkowan protokół Oprogramowanie serwera Oprogramowanie klienta repotorium Kopia roboca 7
Co nam daje sstem kontroli wersji? 8
Śledenie historii projektu... cas... rev. 1 rev. 2 rev. 3 rev. 4 9
Praca w wielu miejscach (kopia roboca, checkout) repotorium komputer w domu checkout komputer w prac kopia roboca 10
Praca w wielu miejscach (comitt, checkout) repotorium komputer w domu commit checkout komputer w prac kopia roboca kopia roboca 11
Praca w wielu miejscach (update) repotorium komputer w domu update commit komputer w prac kopia roboca kopia roboca 12
Współpraca wielu osób (praca równoległa) repotorium komputer Alicji checkout checkout komputer Boba kopia roboca kopia roboca 13
Współpraca wielu osób (log) repotorium Log: rev kto komentar:... 5, A, mieniłam satę graficną projektu 6, B, poprawiłem błąd nr 7... komputer Alicji commit commit komputer Boba mieniłam satę graficną projektu poprawiłem błąd nr 7 kopia roboca kopia roboca 14
Współpraca wielu osób repotorium Log: rev kto komentar:... 5, 2, A, mieniłam satę graficną projektu 6, B, poprawiłem błąd nr 7... komputer Alicji update update komputer Boba kopia roboca kopia roboca 15
Współpraca wielu osób repotorium komputer Alicji checkout checkout komputer Boba kopia roboca kopia roboca 16
Współpraca wielu osób repotorium? komputer Alicji commit commit komputer Boba kopia roboca kopia roboca 17
Współpraca wielu osób (niekatualna kopia roboca) repotorium Musis uaktualnić swoją kopię robocą! komputer Alicji commit komputer Boba kopia roboca kopia roboca Pożądana cecha: tw. atomowe transakcje 18
Współpraca wielu osób (konflikt) repotorium komputer Alicji update komputer Boba konflikt! kopia roboca kopia roboca 19
Co nam daje sstem kontroli wersji Historia projektu Kopia bepieceństwa (backup) Śledenie mian w kodie źródłowm Łącenie prac wielu osób Komunikacja w espole Wmusa stosowanie tw. dobrch praktk projektowch Rolicanie casu prac 20
Obsar astosowań Głównie oprogramowanie Dokumentacja tekstowa Projekt sprętu (m.in. PCB) inne 21
Subversion (SVN). To centraliowan sstem kontroli wersji, któr powstał jako amiennik wsłużonego CVS. Jest to wolne oprogramowanie na licencji Apache. http://subversion.apache.org/ http://svnbook.red-bean.com/ Po stronie klienta istnieje wiele rowiąań, m.in: TortoiseSVN, RapidSVN, KDESvn, Subclipse, 22
Checkout (pobier) repotorium Twor lokalną kopię robocą checkout komputer użtkownika kopia roboca 23
Commit (atwierdź mian) repotorium Wprowada mian do repotorium commit komputer użtkownika kopia roboca 24
Update (uaktualnij) repotorium Uaktualnia lokalną kopię robocą do rewiji o konkretnm numere update komputer użtkownika kopia roboca 25
Eport (eksportuj) repotorium Wciąga stan repotorium w postaci estawu plików, ale nie jest to kopia roboca. Folder docelow nie jest objęt kontrolą wersji. eport komputer użtkownika 26
Standardowa struktura folderów trunk wersja rowojowa, awcaj najbardiej aktualna główna gałąź projektu branches odgałęienia projektu, które powstają w celu badania pewnch ekspermentalnch rowiąań. Mogą one ostać później wcielone do trunk albo aniechane tags wróżnione wersje, tw. onacone cli np. wersje finalne (np. v.1.0, 2.0 ) lub końcące pewien etap (np. prototp, wersja do testów) 27
SVN tips & tricks 28
svn:ignore (properties) Mechanim filtrowania plików, które obsługiwane są pre sstem kontroli wersji. Komputer użtkownika main.c main.obj main.lst svn:ignore *.lst *.obj *.ee commit repotorium main.c main.ee kopia roboca 29
svn:eternals (properties) Mechanim łącenia w jednej kopii robocej plików różnch repotoriów. Repotorium A Repotorium B a b c svn:eternals checkout komputer użtkownika a b c kopia roboca 30
commit pre-commit hook Mechanim apobiegania wprowadaniu do repotorium błędnch danch, np. kodu któr się nie kompiluje. Komputer użtkownika main.c: commit pre-commit hook: np. werfikacja c kod się kompiluje { } i++ repotorium kopia roboca main.c 31
Narędia do wiualiacji cli dlacego praca programist nie awse jest nudna http://code.google.com/p/gource http://www.statsvn.org 32
Diękuję a uwagę! 33