13 maja 2007

Repozytorium plików SVN z klientem TortoiseSVN na Windows

Kiedyś gdzieś na jakiejś prezentacji widziałem bardzo ciekawą i nadzwyczaj trafną definicję słowa Informatyka. Dokładnej jej treści nie udało mi się odszukać, ale brzmiało to jakoś tak: Informatyka to ogół dyscyplin naukowych zajmujących się informacją, a w szczególności jej komputerowym przetwarzaniem. I w rzeczy samej, najistotniejsze są dane a cała reszta to tylko ich pewne przetwarzanie, w szczególności gromadzenie i prezentacja w wygodnej formie. Jako że temat dzisiejszego artykułu jest dość „niedzielny” pozwolę sobie na zwiększoną porcję dywagacji. No więc jak można przetłumaczyć słowo Informatyka na język angielski? W powszechnym obiegu równie często spotyka się dwie możliwości: „Computer Science” i „Information Technology”. Które moim zdaniem jest właściwsze? To zależy. Ci, którzy w Informatyce widzą więcej komputera powinni wybrać „Computer Science”. Ci, dla których podobnie jak dla mnie jest to raczej nauka o przetwarzaniu informacji, w typowej sytuacji przy pomocy komputera, powinni skłonić się ku drugiej z możliwości.

Moje informacje, dane, bywa czasem, że są dla mnie nadzwyczaj cenne. Nadzwyczaj cenne są dla mnie dane związane z moją pracą magisterską, w szczególności jej tekst i kod źródłowy aplikacji. Nie wiem czy jest to przypadłość cechująca większość ludzi czy tylko tą pedantyczną część, w każdym razie zaobserwowałem, nie tylko na samym sobie, istnienie syndromu przedwczesnego kasowania. Wydaje się nam chwilowo, że pewien fragment kodu czy tekstu jest zły, więc zastępujemy go nowym, a stary oczywiście z miejsca kasujemy i często niedługo po tym tego żałujemy. Kto nigdy w życiu nie użył Windows’owego kosza, czy DOS’owej lub Linux’owej komendy undelete niechaj pierwszy rzuci kamień. Pomijam tych, którzy nie używali analogicznego mechanizmu, bo go po prostu nie mieli. To, co proponuję i to, co sam robię, to używanie do składowania naszych ważnych danych repozytorium plików Subversion, w skrócie i pewnie dla analogii do starszego i gorszego, ale dobrze znanego CVS nazywanego także SVN. Ideałem byłoby używanie repozytorium rezydującego na jakimś zdalnym serwerze, ale przy braku takiej możliwości dobrze będzie mieć to nawet lokalnie. No więc zaczynamy instalację.

Zaczynamy od serwera Subversion. Ze strony projektu, http://subversion.tigris.org/, pobieramy program instalacyjny. W chwili pisania tego artykułu najnowsza wersja to 1.4.3. Instaluje się typowo dla Windows, klikając kilkukrotnie guzik Next. Przystępujemy do instalacji klienta TortoiseSVN. Instalator pobieramy ze strony projektu http://tortoisesvn.tigris.org/. Do Subversion 1.4.3 pasuje TortoiseSVN w wersji 1.4.3 oraz 1.4.2, ale chyba nie ma powodu by używać starszej wersji. Instalacja znowu przebiega typowo dla Windows. Zanim przejdziemy do konfiguracji trzeba będzie zrestartować komputer.

Zaczynamy od utworzenia katalogu, który będzie zawierał wszystkie nasze repozytoria. Standardowym katalogiem instalacji SVN jest C:\Program Files\Subversion. Proponuję utworzyć podkatalog repos w tym właśnie katalogu, ale nie ma żadnych ograniczeń co do nazwy czy też lokalizacji. W katalogu repos tworzymy teraz podkatalog, który będzie zawierał nasze repozytorium. Nazwijmy go testowe. Aby zrobić z tego zwykłego katalogu repozytorium klikamy na nim prawym guzikiem myszy i z menu kontekstowego wybieramy opcję TortoiseSVN > Create repository here, tak jak pokazano na poniższej ilustracji. Wybieramy jeden z dwu typów repozytorium. Oba będą równie dobre.


Musimy teraz skonfigurować zasady kontroli dostępu. W tym celu edytujemy plik testowe\conf\svnserve.conf. W najprostszym przypadku możemy po prostu wyłączyć uwierzytelnianie poprzez odkomentowanie linii:
anon-access = read
auth-access = write
i zmianę wartości read na write dla parametru anon-access. Plik svnserve.conf jest dobrze samoudokumentowany i powstrzymam się od tłumaczenia.

Środowisko mamy gotowe. Trzeba jeszcze tylko uruchomić serwer ze wskazaniem na katalog zawierający repozytoria. Serwer konfigurujemy jako usługę uruchamianą automatycznie przy starcie systemu operacyjnego. W tym celu z linii komend odpalamy polecenie:
sc create svn
binpath= "C:\Program Files\Subversion\bin\svnserve.exe
--service -r \"C:\Program Files\Subversion\repos\""
start= auto
oczywiście zmieniając odpowiednio, w razie potrzeby, ścieżki dostępów. Musimy także uważać na odstępy dookoła znaku =, przed = nie może być żadnej spacji, po musi być dokładnie jedna. Gotowe! Aby utworzyć kopię roboczą (ang. working copy) repozytorium tworzymy pusty katalog o dowolnej nazwie, klikamy na nim prawym guzikiem myszy i z menu kontekstowego wybieramy SVN Checkout. Jako URL repozytorium podajemy svn://localhost/testowe, gdzie testowe to nazwa naszego repozytorium. Musimy tylko pamiętać, że od tej pory nie jest to już zwykły katalog i że do wykonywania operacji na zawartych w nim plikach musimy używać opcji z menu TortoiseSVN (albo innego klienta SVN). Do repozytorium możemy podłączyć się także z poziomu Eclipse z użyciem jednej z dwu wtyczek (ang. plugin): Subversive lub Subclipse. Ta pierwsza jest bardziej rozbudowana funkcjonalnie, ale za to zdarza się, że coś nie działa jak trzeba. W najprostszym przypadku lepsza będzie ta druga. Wtyczkę do NetBeans’a można pobrać ze strony http://subversion.netbeans.org/.

Ostatnim ogniwem w łańcuchu bezpieczeństwa naszych danych są kopie zapasowe repozytorium. Od biedy, można by zwyczajnie kopiować katalog repozytorium, ale nie jest to z wielu względów dobre rozwiązanie. Szczęśliwie SVN dostarcza bardzo prostego mechanizmu. Aby utworzyć zrzut danych repozytorium wystarczy uruchomić z linii poleceń komendę:
svnadmin dump
"C:\Program Files\Subversion\repos\testowe"
> "C:\Program Files\Subversion\backup\testowe.dump"
i nie trzeba nawet w tym celu wyłączać serwera. Jak można się domyślić spowoduje to utworzenie pliku testowe.dump zawierającego kompletne dane repozytorium. Możliwe jest także tworzenie kopii przyrostowych. Plik kopii zapasowej będzie zawierał wówczas tylko wybrany zakres rewizji. Aby odtworzyć dane z tak utworzonego pliku kopii uruchamiamy polecenie:
svnadmin load
"C:\Program Files\Subversion\repos\testowe"
< "C:\Program Files\Subversion\backup\testowe.dump"
Bardzo dobrym źródłem wiedzy o Subversion jak i o repozytoriach plików w ogólności jest książka dostępna nie odpłatnie pod adresem http://svnbook.red-bean.com/.

Brak komentarzy: