Ultimativni vodič za postavljanje Apache Subversion SVN i TortoiseSVN za kontrolu verzija


Ako vaš posao zahtijeva rukovanje dokumentima, web stranicama i drugim vrstama datoteka koje se redovno ažuriraju, možda ćete htjeti koristiti mehanizam kontrole verzija ako to već ne radite.

Između ostalog, ovo omogućava vama (i grupi potencijalnih saradnika) da pratite promjene napravljene u datoj datoteci i omogućava vam da se vratite na prethodnu verziju ako se pojavi problem ili kada ažuriranje nije dalo očekivani rezultat .

U ekosistemu slobodnog softvera, sistem kontrole verzija koji se najčešće koristi se zove Apache Subversion (ili skraćeno SVN). Uz pomoć mod_dav_svn (Apacheov modul za Subverziju), možete pristupiti Subverzionom spremištu koristeći HTTP i web server.

Ipak, zasučimo rukave i instalirajmo ove alate na RHEL/CentOS 7, Fedora 22-24, Debian 8/7 i Ubuntu 16.04-15.04 server. Za naše testove koristićemo CentOS 7 server sa IP 192.168.0.100.

Na strani klijenta (Windows 7 mašina), mi ćemo instalirati i koristiti TortoiseSVN (koji je baziran na Apache Subverziji) kao interfejs za SVN.

Naše okruženje za testiranje


Server - CentOS 7
IP Address - 192.168.0.100
Client - Windows 7

Korak 1 – Instaliranje i konfigurisanje SVN-a na Linuxu

Kao što smo upravo spomenuli, oslonićemo se na Apache da bismo pristupili SVN spremištu koristeći veb interfejs. Ako već nije instaliran, obavezno ga dodajte na listu paketa kao što je prikazano u nastavku:


------------------ On CentOS / RHEL / Fedora ------------------ 
yum update && yum install mod_dav_svn subversion httpd -y

------------------ On Debian / Ubuntu ------------------ 
apt-get update && apt-get install libapache2-svn subversion apache2 -y 

Tokom instalacije na CentOS 7, Apache konfiguracioni fajl za SVN će biti kreiran kao /etc/httpd/conf.modules.d/10-subversion.conf. Otvorite datoteku i dodajte sljedeći konfiguracijski blok:


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/httpd/subversion-auth
    Require valid-user
</Location>

Napomena: Na Debian/Ubuntu morate dodati redove ispod u /etc/apache2/mods-enabled/dav_svn.conf fajl.


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/apache2/subversion-auth
    Require valid-user
</Location>

Na Debian/Ubuntu, morate omogućiti dav_svn Apache modul:


a2enmod dav_svn

Par pojašnjenja:

  1. SVNParentPath direktiva ukazuje na direktorij u kojem će naša spremišta biti kasnije kreirana. Ako ovaj direktorij ne postoji (što je najvjerovatnije slučaj), kreirajte ga sa:

    
    mkdir -p /websrv/svn
    

    Važno je napomenuti da se ovaj direktorij NE smije nalaziti unutar, ili preklapati, DocumentRoot virtuelnog hosta koji trenutno opslužuje Apache. Ovo je showstopper!

  2. Direktiva AuthUserFile označava datoteku u kojoj će biti pohranjeni vjerodajnici važećeg korisnika. Ako želite da dozvolite svima da pristupe SVN-u bez autentifikacije, uklonite poslednja četiri reda u bloku Lokacija. Ako je to slučaj, preskočite Korak 2 i idite direktno na Korak 3.
  3. Iako ćete možda biti u iskušenju da ponovo pokrenete Apache kako biste primijenili ove nedavne promjene, nemojte to još činiti jer još uvijek moramo kreirati autentifikacijski fajl sa važećim korisnicima za SVN i samo spremište.

Korak 2 – Dodajte dozvoljene korisnike za pristup SVN-u

Sada ćemo koristiti htpasswd da kreiramo lozinku za naloge kojima će biti dozvoljen pristup SVN-u. Samo za prvog korisnika, trebat će nam opcija -c.

Dozvoljeni nalozi i bcrypt šifrovane lozinke (-B) će biti pohranjeni u /etc/httpd/subversion-auth u parovima ključ/vrijednost. Imajte na umu da se prema današnjim standardima, zadana MD5 ili SHA enkripcija koju koristi htpasswd smatra nesigurnim.


------------------ On CentOS / RHEL / Fedora ------------------ 
htpasswd -cB /etc/httpd/subversion-auth tecmint

------------------ On Debian / Ubuntu ------------------ 
htpasswd -cB /etc/apache2/subversion-auth tecmint

Ne zaboravite postaviti pravo vlasništvo i dozvole za autentifikacijski fajl:


------------------ On CentOS / RHEL / Fedora ------------------ 
chgrp apache /etc/httpd/subversion-auth
chmod 660 /etc/httpd/subversion-auth

------------------ On Debian / Ubuntu ------------------ 
chgrp www-data /etc/apache2/subversion-auth
chmod 660 /etc/apache2/subversion-auth

Korak 3 – Dodajte sigurnost i kreirajte SVN spremište

Pošto ćete SVN-u pristupati preko web interfejsa, moraćete da dozvolite HTTP (i opciono HTTPS) saobraćaj kroz vaš zaštitni zid.


------------------ On CentOS / RHEL / Fedora ------------------ 
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload 

Ponovnim učitavanjem konfiguracije zaštitnog zida pomoću --reload, trajne postavke se odmah stavljaju na snagu.

Kreirajte početno SVN spremište pod nazivom tecmint:


svnadmin create /websrv/svn/tecmint

Promijenite vlasnika i vlasnika grupe u apache rekurzivno:


------------------ On CentOS / RHEL / Fedora ------------------ 
chown -R apache:apache /websrv/svn/tecmint

------------------ On Debian / Ubuntu ------------------ 
chown -R www-data:www-data /websrv/svn/tecmint

Konačno, morat ćete promijeniti sigurnosni kontekst /websrv/svn/tecmint (imajte na umu da ćete morati ponoviti ovaj korak ako kasnije odlučite kreirati druga spremišta):


------------------ On CentOS / RHEL / Fedora ------------------ 
chcon -R -t httpd_sys_content_t /websrv/svn/tecmint/
chcon -R -t httpd_sys_rw_content_t /websrv/svn/tecmint/

Napomena: Posljednje dvije komande se možda neće primijeniti ako instalirate SVN na VPS sa onemogućenim SELinuxom.

Preporučeno čitanje: Naučite kako privremeno ili trajno onemogućiti SELinux u Linuxu

Ponovo pokrenite Apache i provjerite da li je spremište dostupno.


------------------ On CentOS / RHEL / Fedora ------------------ 
systemctl restart httpd

------------------ On Debian / Ubuntu ------------------ 
systemctl restart apache2

Zatim pokrenite web pretraživač i usmjerite ga na http://192.168.0.100/svn/tecmint. Nakon unosa vjerodajnica za važećeg korisnika koje smo kreirali u 1. koraku, izlaz bi trebao biti sličan:

U ovom trenutku nismo dodali nikakav kod u naše spremište. Ali to ćemo uraditi za minut.

Korak 4 – Instalirajte TortoiseSVN u Windows 7 klijentu

Kao što smo spomenuli u uvodu, TortoiseSVN je korisničko sučelje za Apache Subverziju. To je besplatni softver licenciran pod GPL-om i može se preuzeti sa https://tortoisesvn.net/downloads.html.

Odaberite arhitekturu (32 ili 64-bitnu) koja odgovara vašoj mašini i instalirajte program prije nego što nastavite.

Korak 5 – Podešavanje SVN spremišta na klijentskoj mašini

U ovom koraku koristit ćemo folder pod nazivom webapp unutar Documents. Ovaj folder sadrži HTML datoteku i dvije mape pod nazivom skripte i stilovi sa Javascript i CSS datotekom (script.js i styles.css, respektivno) koje želimo dodati u kontrolu verzija.

Desni klik na webapp i odaberite SVN Checkout. Ovo će kreirati lokalnu kopiju udaljenog spremišta (koje je trenutno prazno) i inicijalizirati folder za kontrolu verzija:

U URL spremišta upišite http://192.168.0.100/svn/tecmint i uvjerite se da je lokalni direktorij za odjavu ostao isti, a zatim kliknite OK:

Unesite korisničko ime i lozinku (pogledajte Korak 2) i kliknite OK:

Bićete upitani da li želite da izvršite odjavu u neprazan imenik. Potvrdite da nastavite s naplatom. Kada se završi, zelena kvačica će se pojaviti pored naziva foldera:

Korak 6 – Urezivanje promjena i postavljanje datoteka u udaljeno SVN spremište

Ponovo kliknite desnim tasterom miša na webapp i ovaj put odaberite Commit. Zatim napišite opisni komentar da biste kasnije identificirali ovo urezivanje i provjerite datoteke i mape koje želite postaviti u spremište. Na kraju kliknite OK:

U zavisnosti od veličine fajlova, urezivanje ne bi trebalo da traje više od jedne minute. Kada se završi, vidjet ćete da smo sada na reviziji 1, koja odgovara verziji i fajlovima navedenim u web sučelju:

Ako nekoliko ljudi radi na istim fajlovima, poželjet ćete Ažurirati svoju lokalnu kopiju kako biste imali dostupnu najnoviju verziju za rad. To možete učiniti desnim klikom na webapp i odabirom Ažuriraj iz kontekstnog menija.

Čestitamo! Uspješno ste postavili SVN server i izvršili/ažurirali jednostavan projekat pod kontrolom verzija.

Sažetak

U ovom članku smo objasnili kako da instalirate i konfigurišete Apache Subversion server spremišta na CentOS 7 serveru, i kako da unesete promene u to spremište koristeći TortoiseSVN<.

Imajte na umu da za SVN i TortoiseSVN postoji mnogo više od onoga što možemo adekvatno da pokrijemo ovde (posebno kako se vratiti na prethodne revizije), tako da ćete možda želeti da se pozovete na zvanični docs (SVN i TortoiseSVN) za više informacija i slučajeva konfiguracije.

Kao i uvijek, ne ustručavajte se javiti nam ako imate pitanja! Slobodno koristite formular za komentare ispod kako biste nas kontaktirali bilo kada.