Blog Kei.pl

SVN – nowoczesny system kontroli wersji

SVN – nowoczesny system kontroli wersji

Co to takiego i do czego może się przydać? Zapewne jest to pierwsze pytanie, jakie nasunęło się osobom, które nie słyszały wcześniej o systemach kontroli wersji SVN, czy nieco starszych CVS. 

Wiele osób uważa, że jest to aplikacja wyłącznie dla programistów, którzy dzięki niej mogą łatwiej zarządzać projektami, ponieważ koordynuje ona prace nad jednym projektem przez wiele osób. Oczywiście jest to prawda z jednym małym wyjątkiem. Nie tylko programiści potrzebują uporządkowanego zbioru plików i dokumentów przechowywanego w jednym miejscu.

Zapewne zdarzyło się już niejednokrotnie, że utraciliśmy ważne pliki, adresy, numery telefonów, lub też korzystamy z kilku komputerów i nie wiemy, na którym znajduje się najbardziej aktualna wersja ważnego dokumentu. Tutaj właśnie z pomocą przychodzi nam system kontroli wersji, dając narzędzia, dzięki którym w prosty sposób zapanujemy nad bałaganem naszych plików. Będziemy mogli śledzić zmiany, jakie następują w danym dokumencie, a w razie potrzeby cofnąć się do dowolnej wersji wstecz. Bez obaw możemy też modyfikować nasze dokumenty z różnych lokalizacji, nie troszcząc się o synchronizację danych.

SVN, CVS – który z nich wybrać

CVS jest systemem, który zdobył sobie dużą popularność. Ma niemal wszystko czego możemy wymagać od tego typu systemów, jednakże ma też kilka wad. Po pierwsze jest nieco przestarzały, a po drugie jego niedociągnięcia mogą irytować bardziej wymagających użytkowników – brak kontroli nad katalogami i metadanymi czy transakcyjnych „commitów”.

Dlatego powstał pomysł stworzenia czegoś nowego, napisanego zupełnie od podstaw – tak narodził się Subversion, czyli SVN.

Instalacja na serwerze

Potrzeba naprawdę niewiele, aby korzystać z systemu kontroli wersji Subversion. Na serwerach Kei.pl, SVNa instalować można na platformach e-Biznes Aztec oraz Luna.

Klient zdecydowany na instalację, przesyła e-mailem zlecenie do Biura Obsługi Klienta (koniecznie z autoryzowanego adresu), podając domenę, dla której Subversion ma być zainstalowany (z reguły nazwa taka ma postać svn.mojadomena.pl, jednak może to być dowolna domena lub subdomena). Po potwierdzeniu instalacji przez administratora Kei.pl, Klient otrzymuje wstępnie skonfigurowanego SVN’a.

Aby dokończyć instalację należy zalogować się przez SSH (np. przez Putty) na serwer, jako użytkownik subversion – hasło wysyłane jest w mailu potwierdzającym instalację.

Najpierw należy stworzyć użytkownika, który będzie miał dostęp do repozytorium. W tym celu wydajemy polecenie:

htpasswd .htpasswd [użytkownik]

gdzie [użytkownik] jest nazwą użytkownika, który ma mieć dostęp do repozytorium.

Następnie wchodzimy do katalogu svnrep i tworzymy repozytorium poleceniem:

svnadmin create repo

Komenda tworzy repozytorium o nazwie repo. Teraz nadajemy uprawnienia wcześniej stworzonemu użytkownikowi, do naszego repozytorium. Edytujemy plik .authzfile znajdujący się w katalogu domowym użytkownika subversion.

Minimalny wpis jaki powinien widnieć w tym pliku:

[/]
[użytkownik] = rw

Oznacza on, że podany użytkownik ma prawo do zapisu i odczytu wszystkich repozytoriów. Czas teraz na dodanie plików do repozytorium:

svn --username [użytkownik] import [nazwa_kat] https://svn.mojadomena.pl/repo

Po wydaniu tego polecenia zostaniemy zapytani o hasło dla podanego użytkownika, a po jego podaniu pliki z katalogu o wybranej nazwie, zostaną przesłane do repozytorium.

Pliki możemy przeglądać korzystając z przeglądarki internetowej, w tym celu wpisujemy adres:

https://svn.mojadomena.pl/repo

W celu pobrania danych z repozytorium, posłużymy się poleceniem:

svn --username [nazwa_uzytkownika] co https://svn.mojadomena.pl/repo

W katalogu, w którym aktualnie się znajdujemy, zostanie stworzony katalog „repo”, który zawierał będzie najnowszą wersję plików.

Jeśli zmienimy dane w plikach lokalnych, możemy je wysłać do repozytorium komendą svn update, będąc w katalogu o nazwie repozytorium,w naszym przypadku w katalogu „repo”.

Dodatkowe możliwości

SVN zawiera kilka dodatkowych funkcji, których nie było we wspomnianym CVS. Mowa tutaj o funkcjonalności, która pozwala na wywołanie dowolnych komend po (lub przed) akcji na repozytorium.

Przykładem może być wysłanie maila (jest to oczywiście jedynie przykład – możliwości są o wiele większe) po operacji „commit”. W tym celu wchodzimy do katalgu „hooks” w naszym repozytorium, następnie zmieniamy nazwę pliku „post-commit.tmpl” na „post-commit”. Jak sama nazwa wskazuje, plik jest odpowiedzialny za wywoływanie komend, po operacji „commit” na repozytorium, w którym się znajduje.

Komenda zmieniająca nazwę pliku:

mv post-commit.tmpl post-commit

Po tej operacji nadajemy prawa do uruchomienia:

chmod 755 post-commit

a następnie edytujemy plik „post-commit”:

mcedit post-commit

Na samym końcu pliku, zmieniamy adres e-mail z „commit-watchers@example.org”, na adres na który będą przychodzić powiadomienia o aktualizacji plików w repozytorium.

Prosimy sprawdzić czy na serwerze znajduje się plik: /usr/share/subversion/hook-scripts/commit-email.pl, który jest odpowiedzialny za wysyłanie maili, i do którego odwołuje się plik post-commit. W przypadku jego braku, należy skontaktować się z administratorem Kei.pl i poprosić o instalację pakietu subversion-tools.