Jak stworzyć własny system kontrolo wersji na przykładzie serwera SVN

Tworząc projekt informatyczny (acz nie tylko) często napotyka się problemy typu, związane z kontrolą wersji, czy nawet robienia kopii zapasowych poszczególnych programów. Jest wiele metod do wykonania kopii (jak i również kontrolować wersję), można wykorzystać zewnętrzny dysk, lub inny katalog, w nim tworzyć katalogi z datami i do niego kopiować całość projektu. Rozwiązanie to jest w miarę proste, acz nie wygodne.

Inną metodą jest stworzenie własnego serwera SVN, zasada działania jest bardzo podobna jak powyższe kopiowanie, jednak można kopiować w ciągu dnia bardzo dużą ilość razy pliki (w zależności od klienta, ale przeważnie za pomocą 2-3 kliknięć), kopiowane są tylko zmienione pliki, dzięki czemu nawet po dłuższym użytkowaniu archiwum nie rozrośnie się do gigantycznych rozmiarów.

Jak przygotować taki serwer? Bardzo prosto, zademonstruję na przykładzie FreeBSD.

1. instalujemy serwer Apache (2.0/2.2 – obojętne), do tego celu przechdzimy do katalogu:

cd /usr/ports/www/apache22 (instalujemy komendą: make install clean), ważną rzeczą jest aby w momencie gdy pojawi się ekran konfiguracyjy zaznaczyć:

BDB                   Enable BerkeleyDB dbm

Resztę opcji wg dowolności każdego użytkownika.

Gdy serwer jest już zainstalowany, chcielibyśmy aby uruchamiał się razem z systemem (lub nie, wtedy omijamy ten krok)

echo 'apache22_enable=”YES”’ >> /etc/rc.conf

2. Zainstalujmy teraz system SVN, w tym celu wykonujemy następujące kroki:

cd /usr/ports/devel/subversion , po czym make install clean

tutaj ważną opcją jest:

MOD_DAV_SVN        mod_dav_svn module for Apache 2.X

Również trzeba ją zaznaczyć, aby serwer mógł działać poprawnie.

Mamy zainstalowane wszystkie składniki, sprawmy aby razem zaczęły działać.

Należy wybrać katalog w którym całość danych będzie składowana, ja je składuję w

/usr/local/www/apache2/data/svn/ są różne miejsca gdzie można to robić, każde z nich jest dobre.

Tak więc tworzymy katalogi:

mkdir -p /usr/local/www/apache2/data/svn

mkdir -p /usr/local/www/apache2/data/svn/default/trunk

mkdir /usr/local/www/apache2/data/svn/default/branches

mkdir /usr/local/www/apache2/data/svn/default/tags

Należy skopiować do katalogu apache pliki xsl i css, aby z poziomu przeglądarki można było przeglądać archiwum… nigdy nie wiadomo, kiedy i gdzie będziemy chcieli z niego skorzystać.

cp /usr/local/share/subversion/xslt/* /usr/local/www/apache22/data/

Pliki kopiujemy do głównego katalogu apacha, ale można do tego wykorzystać dowolny inny.

Nie chcemy, również aby osoby nie powołane miały dostęp do naszego katalogu. W tym celu zabepieczymy go podstawowym (acz wystarczająco dobrym) zabezpieczeniem w postaci „base autoryzation”

mkdir /usr/local/www/apache2/data/svn/access

touch /usr/local/www/apache2/data/svn/access/users

htpasswd -mb /usr/local/www/apache2/data/svn/access/users użytkownik hasło

Gdy te elementy mamy gotowe, można poinformować apache co chcemy aby zrobił z naszym serwerem SVN

ee /usr/local/etc/apache2/httpd.conf i dodajemy wpis (można przy końcu)

<Location /svn>
DAV svn
SVNParentPath /usr/local/www/apache22/data/svn/repos
SVNIndexXSLT „http://server/svnindex.xsl”

# anonymous first
Require valid-user

# authenticating them valid ones
AuthType Basic
AuthName „Tylko dla wtajemniczonych!”
AuthUserFile /usr/local/www/apache22/data/svn/access/users
</Location>

należy uruchomić (ponownie) serwer, aby zmiany zostały zaktualizowane:

/usr/local/etc/rc.d/apache22 (re)start

i można stworzyć przykładowe archiwum (w ten sposób można utworzyć dowolną ich ilość):

mkdir /usr/local/www/apache2/data/svn/repos
svnadmin create /usr/local/www/apache2/data/svn/nazwaProjektu
svn import /usr/local/www/apache2/data/svn/default file:///usr/local/www/apache2/data/svn/repos/nazwaProjektu -m „Initial Import”

ostatnie modyfikacje i poprawki:
chown -R www:www /usr/local/www/apache2/data/svn (tą komendę trzeba wykonać zawsze gdy, dodamy kolejny projekt)

chmod 600 /usr/local/www/apache2/data/svn/access/*

System SVN jest gotowy do działania..

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Proszę dokończyć równanie: * Time limit is exhausted. Please reload CAPTCHA.