SVN - wprowadzenie Adam Krechowicz 24 czerwca 2018 1 Wprowadzenie do SVN SVN SubVersion jest systemem kontroli wersji pozwalaj cym wielu u»ytkownikom na swobodne wspóªdzielenie tych samych plików. Pozwala na wspólne modykowanie tych samych plików przez wiele osób oraz odpowiada za przechowywanie historii wprowadzonych zmian. Wspóªdzielone pliki przechowywane s na serwerze w postaci repozytotium. U»ytkownicy mog pobiera zawarto± repozytorium, modikowa lokalnie a nast pnie zatwierdzi dokonane modykacje w formie kolejnej rewizji (wersji) w repozytorium. UWAGA: Narz dzia SVN i Git posiadaj tak sam podstawow funkcjonalno±. 1.1 Podstawowe funkcje checkout utworzenie kopii plików znajduj cych si w repozytorium na lokalnym komputerze. Operacj t wykorzystuje si zwykle tylko raz, podczas pierwszego dost pu do repozytorium. update pobranie najnowszej wersji plików z repozytiurium commit zatwierdzenie zmian. Powoduje wysªanie zmian dokonanych w plikach do repozytorium. Tym samym wprowadzone przez nas zmiany sat si najnowsz wersj w repozytorium. 2 U»ywanie SVN 2.1 Windows W systemie Windows do obsªugi SVN najlepiej wykorzysta program TortoiseSVN http://tortoisesvn.net/. Program integruje si z powªok i mo»na do niego uzyska dost p z menu podr cznego: 1
Aby uzyska dost p do repozytorium nale»y wykona operacj SVN Checkout: Po wpisaniu prawidªowego adresu repozytorium zostaniemy poproszeni o wpisanie loginu i hasªa w celu autoryzacji u»ytkownika (warto rozwa»y opcj zapami tania hasªa). Po prawidªowej autoryzacji nast pi ±ci gni cie plików znajduj cych si w repozytorium na lokalny dysk. Pliki zostan oznaczone w sposób wskazuj cy na to,»e podlegaj one kontroli wersji: 2
Zielona ikona wskazuje na to,»e pliki znajduj ce si w zadanym katalogu s zgodne ze ±ci gni t wersj z repozytorium. Je±li zawarto± katalogu podlegaj ca kontroli wersji zostanie zmodykowana folder zostanie stosownie oznaczony za pomoc czerwonej ikony: Modykacje mo»na zatwierdzi za pomoc polecenia SVN Commit. Spowoduje to wysªanie zmian do repozytorium tak,»e stan si widoczne dla wszystkich u»ytkowników: 3
W oknie dokonywania zatwierdzenia mo»na ustawi opis zmian (jest to bardzo dobra praktyka) oraz podejrze zmiany jakie zostan wprowadzone. W celu pobrania zmian wprowadzonych przez innych nale»y wykorzysta polecenie SVN Update. Spowoduje to ±ci gni cie najbardziej aktualnej wersji wszystkich plików z repozytorium na dysk: 4
2.2 Linux Do korzystania z svn na popularnych dystrybucjach Linuxa mo»na wykorzysta program RapidSVN. Np. w celu zainstalowania go w systemie Ubuntu nale»y wykona polecenie: sudo apt get install rapidsvn W celu uzyskania dost pu do repozytorium nale»y wybra polecenie Repository- >Checkout...: 5
Po wpisaniu adresu repozytorium i docelowego katalogu (a nast pnie dokonaniu autoryzacji) zawarto± repozytorium zostanie ±ci gni ta na dysk. W celu zatwierdzenia lokalnych zmian nale»y wybra opcj Modify->Commit... lub klikn na odpowiedni ikonk na pasku narz dzi (Uwaga: ikonka mo»e by niedost pna do czasu rozwini cia drzewa repozytorium): Spowoduje to wy±wietlenie okna w którym mo»emy wpisa co zmienili±my i zobaczy jakie pliki zostan zmodykowane w repozytorium: 6
W celu ±ci gni cia najbardziej aktualnej wersji z repozytorium nale»y wybra opcj Modify->Update lub klikn ikonk Update selected. Ikona tak»e mo»e by niedost pna je±li drzewo danego repozytorium jest zwini te. 2.3 Konsola Dost p do svn mo»na tak»e uzyska poprzez konsol systemu Linux. Dost p za pomoc linii polece«mo»e si przyda je±li na komputerze nie ma interfejsu 7
gracznego. $sudo apt get install subversion Kilka przykªadowych komend: $svn checkout http://kronos.tu.kielce.pl/svn/prezentacja $svn update prezentacja/ $svn commit prezentacja/ m"zmieniono kilka rzeczy" 2.4 rodowisko programistyczne Wi kszo± ±rodowisk programistycznych (IntelliJ, NetBeans, eclipse etc.) posiada wbudowan mo»liwo± zarz dzania repozytorium (by mo»e konieczne oka»e si zainstalowanie dodatkowego plugina). Korzystanie z repozytorium kod kontrol ±rodowiska programistycznego jest najbardziej polecanym sposobem. 2.4.1 NetBeans Import projektu do repozytorium Operacja wykonywana po utworzeniu lokalnie nowego projektu, który chcemy aby podlegaª kontroli wersji 8
9
2.4.2 NetBeans Wykonanie operacji Checkout 10
2.4.3 NetBeans Wykonanie operacji Update 11
2.4.4 NetBeans Wykonanie operacji Commit 3 Zarz dzanie plikami SVN zarz dza tylko plikami znajduj cymi si w repozytorium. Dodanie nowego pliku do katalogu powi zanego z repozytorium nie spowoduje automa- 12
tycznie dodania go do repozytorium. W przypadku TortoiseSVN pliki nie podlegaj ce wersjonowaniu oznaczane s za pomoc niebieskiej ikony: W celu dodania pliku do repozytorium nale»y u»y opcji Add. Dodanie pliku do repozytorium nast pi po wykonaniu nast pnego zatwierdzenia opcj Commit. W przypadku folderów warto wykorzysta opcj rekurencyjnego dodawania aby pliki w dodawanym folderze tak»e dodaªy si do repozytorium. W przypadku usuwania plików lokalne usuni cie nie spowoduje usuni cia pliku w repozytorium. Po wykonaniu nast pnej operacji Update brakuj cy plik zostanie ponownie ±ci gni ty. W celu usuni cia pliku z repozytorium nale»y u»y opcji Delete. Rzeczywiste usuni cie nast pi po nast pnym u»yciu opcji Commit UWAGA: Lokalne usuni cie pliku a nast pnie u»ycie opcji Update mo»e by wykorzystane jako prosty sposób na przywrócenie z repozytorium pomyªkowo lokalnie zmodykowanego pliku. Wykorzystanie zintegrowanego ±rodowiska programistycznego w du»ej mierze uªatwia zarz dzanie plikami w repozytorium. 4 Inne opcje SVN Show log opcja pozwala na przejrzenie ostatnich rewizji. Pozwala okre±li który u»ytkownik, kiedy i co zmodykowaª. Wiele klientów 13
svn pozwala tak»e na przejrzenie ró»nic w plikach pomi dzy dwoma rewizjami. Resolve conict w przypadku np. modykacji nieaktualnego pliku mo»e wyst pi sytuacja koniktu. Opcja ta pozwala na szybkie rozwi zanie koniktu. Lock je±li wykonujemy krytyczne zmiany warto uzyska wyª czno± na modykowanie pliku. Inni u»ytkownicy nie b d mogli zatwierdza zmian w zablokowanym pliku do czasu zdj cia blokady. tag opcja powoduje skopiowanie wersji z repozytorium. Wykorzystywane w celu oznaczenia np. kolejnych tworzonych wersji. branch opcja powoduje skopiowanie wersji z repozytorium. Wykorzystywane w celu stworzenia odr bnej wersji w której mo»na pracowa nad zadaniem pobocznym do gªównej wersji. 5 Zasady korzystania z repozytorium Klika prostych zasad które pomog zapobiec kªopotom: 1. Przed przyst pieniem do pracy nale»y u»y opcji Update aby uzyska dost p do najbardziej aktualnej wersji. 2. Po zako«czeniu pracy nale»y u»y opcji Commit aby inni u»ytkownicy mieli dost p do wprowadzonych zmian. 3. Nie nale»y wykonywa opcji Commit je±li nasze lokalne zmiany nie s w caªo±ci sko«czone (np. gdy stworzony przez nas kod powoduje bª dy). 4. Nale»y zawsze wpisywa wiadomo±c podczas wykonywania opcji Commit. Pozwoli to na pó¹niejsz szybk orientacj co zostaªo zrobione w danej rewizji. 5. Nie nale»y dodawa do repozytorium plików po±rednich (np plików *.o), plików wynikowych (np plików *.class) oraz plików zwi zanych ze ±rodowiskiem programistycznym. Ich dodanie mo»e powodowa bª dy na innych komputerach. 6. Nale»y rozwa»nie modykowa pliki binarne. Pliki tekstowe mog by modikowane przez kilka osób na raz i ich zawarto± zostanie prawidªowo poª czona. W przypadku plików binarnych mo»e doj± do utracenia cz ±ci zawarto±ci. 14
7. W przypadku wyst pienia koniktów, które uniemo»liwaj wykonania operacji Commit mo»na spróbowa u»y opcji Cleanup, która pomaga w tego typu problemach 8. Je±li zawiod wszystkie próby przywrócenia spójno±ci lokalnej wersji repozytorium najszybsz metod mo»e okaza si usuni cie lokalnej kopii i skorzystanie ponownie z opcji Checkout. Zwykle kªopoty z SVN zwi zane s z lokalnym stanem repozytorium a nie wersj na serwerze 9. UWAGA: Na repozytorium jest limit na wielko± zatwierdzonych pojedynczo zmian. Oznacza to,»e nie mo»na wykona operacji Commit zbyt wielu plików naraz. W przypadku problemów nale»y umieszcza tylko pliki z kodem rezygnuj c z dodawania plików gracznych, d¹wi kowych etc. 15