Server SVN pe Linux – instalare si configurare

In timpul unei colaborari cu o firma straina am avut ocazia sa folosesc SVN (Subversion) zilnic.

Inainte de aceasta colaborare, nu prea era necesar. In general lucrez singur, sau cand lucrez cu cineva, nu lucram pe aceeasi parte asa ca nu ne incurcam.

Indiferent, SVN este o unealta care te poate salva de multe batai de cap.

Sa zicem ca lucrezi la un proiect personal sau pentru un client. Se poate intampla sa faci anumite modificari care sa nu fie necesare sau sa o fi luat pe o directie gresita… si pe urma ce? Trebuie sa cauti toate modificarile facute… care nu-ti sunt necesare…

AU![ In caz ca nu stii exact ce face SVN, citeste de pe site-ul oficial http://subversion.apache.org/. ]

Ca sa nu pateste ca in situatia de mai sus, este cel mai bine sa ai un SVN personal. Eu de cand mi-am facut Server Ubuntu acasa sunt foarte multumit de viteza. Nici o conexiune nu bate 2 metri de cablu UTP intre router si cele doua calculatoare 😉

Asa ca in loc sa-mi fac un cont SVN pe multele (si multe gratuite) site-uri disponibile online, ca si SourceForge, am decis ca e timpul pentru a adauga ceva nou pe server. SVN (de care sunt multumit, este rapid cum nu-ti poti imagina, il folosesc chiar daca lucrez singur, dar pot sa tin evidenta schimbarilor aduse).

Destula vorbaria, cum se instaleaza? Urmaresc cat de bine pot pasii facuti acum cateva zile asa ca s-ar putea sa difere putin situatia proprie.

In primul rand eu folosesc SVN ca si modul Apache.
Pentru a instala SVN in terminal scriem

sudo apt-get install subversion libapache2-svn

Eu mi-am facut directorul SVN in folderul /home/chris/svnrepo

Pentru ca… in folderul chris am si radacina Samba… asa ca orice fisier il pot accesa direct din windows (fie in svn sau nu). Desi nu recomand sa editati fisierele din SVN daca nu stiti ce faceti. De aceea se foloseste protocolul SVN..

sudo svnadmin create /chris/home/svnrepo

Urmeaza sa editam fisierul de configurarea pentru modulul webdav svn. Eu am folosit nano daca bine-mi amintesc, ca si editor – gedit este alta alternativa  – In functie de ce aveti instalat sau daca aveti si KDE, Gnome sau alte softuri grafice pentru Linux.

sudo nano /etc/apache2/mods-enabled/dav_svn.conf

Elementul “Location” din fisierul configurare, este adresa la care vom accesa SVN. De exemplu http://www.server.ro/svnrepo

<Location /svnrepo>

Aceasta linie este deja acolo sub o alta forma. Se scoate comentariul (#) sau se scrie din nou fara comentariu pentru a activa modulul DAV

# Uncomment this to enable the repository
DAV svn

Linia cu SVNPath se seteaza cu folderul in care este SVN. La mine este /home/chris/svnrepo

# Set this to the path to your repository
SVNPath /home/chris/svnrepo

Urmeaza sa activam autentificarea. Este autenficare simpla, de baza, nu foarte sigura. Asa ca tineti cont de asta. Daca este pe un server live disponibil online, faceti altcumva.
Fisierul cu parole este disponibil in acelasi loc unde este si fisierul cu setari AuthUserFile.

# Uncomment the following 3 lines to enable Basic Authentication
AuthType Basic
AuthName “Cu nume vreau eu???
AuthUserFile /etc/apache2/dav_svn.passwd

Pentru a putea accesa SVN, trebuie sa avem un user. Il cream cu urmatoarea comanda

sudo htpasswd2 -cm /etc/apache2/dav_svn.passwd <user>

Optiunea -c se foloseste doar PRIMA data cand se creeaza un user. Dupa aceea, se foloseste optiunea -m, care doar va adauga un user nou fara a recrea fisierul cu parole. Optiunea -m specifica incriptarea MD5 a parolelor.

Exampl:

sudo htpasswd2 -cm /etc/apache2/dav_svn.passwd unuser
New password:
Re-type new password:
Adding password for user unuser

Repornim apache – se reporneste pentru a se incarca noile configurari:

sudo /etc/init.d/apache2 restart

Acum daca totul a fost facut corect, la adresa http://www.server.ro/svnrepo (server evident este adresa locala /internet a serverului tau), ar trebuie sa vezi SVN-ul activat pentru acces doar la citire pentru oricine. Pentru a face modificari iti trebuie un user si o parola.

Daca vrei sa nu fie disponibil nici pentru citire decat pentru useri autentificati, adauga linia urmatoare chiar sub linia AuthUserFile. Reporneste apache.

Require valid-user

Daca totul e in regula, daca reincarci pagina, ti se va cere un user si o parola.

Published by

Cristian Raț

Lucrez ca si dezvoltator aplicatii web de mai bine de 10 ani. Sunt Senior PHP developer la o companie din Londra. Anterior am lucrat in diverse agentii digitale din Londra sau Romania, unde am avut propria companie. In general folosesc WordPress la proiectele freelance sau Symfony framework la jobul de zi cu zi.

Leave a Reply

Your email address will not be published. Required fields are marked *