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


Ako vaš posao zahtijeva rukovanje dokumentima, web stranicama i drugom vrstom datoteka koje se redovito ažuriraju, možda biste trebali koristiti mehanizam za kontrolu verzija ako to već ne radite.

Između ostalog, to vam omogućuje (i grupi potencijalnih suradnika također) da pratite promjene napravljene na određenoj datoteci i omogućuje vam vraćanje na prethodnu verziju ako naiđete na problem ili kada ažuriranje nije dalo očekivani rezultat .

U ekosustavu slobodnog softvera, najčešće korišten sustav kontrole verzija naziva se Apache Subversion (ili skraćeno SVN). Uz pomoć mod_dav_svn (Apacheov modul za Subverziju), možete pristupiti Subverzionom repozitoriju koristeći HTTP i web poslužitelj.

Ipak, zasučimo rukave i instalirajmo ove alate na RHEL/CentOS 7, Fedora 22-24, Debian 8/7 i Ubuntu 16.04-15.04 poslužitelj. Za naše testove koristit ćemo poslužitelj CentOS 7 s IP-om 192.168.0.100.

Na strani klijenta (stroj s Windows 7), instalirat ćemo i koristiti TortoiseSVN (koji se temelji na Apache Subverziji) kao sučelje za SVN.

Naše okruženje za testiranje


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

Korak 1 – Instaliranje i konfiguriranje SVN-a na Linuxu

Kao što smo upravo spomenuli, oslanjat ćemo se na Apache kako bismo pristupili SVN repozitoriju pomoću web sučelja. Ako već nije instaliran, svakako ga dodajte na popis 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 

Tijekom instalacije na CentOS 7, Apache konfiguracijska datoteka za SVN bit će kreirana 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 donje retke u /etc/apache2/mods-enabled/dav_svn.conf datoteku.


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

Na Debianu/Ubuntu morate omogućiti dav_svn Apache modul:


a2enmod dav_svn

Par pojašnjenja:

  1. Direktiva SVNParentPath označava direktorij u kojem će kasnije biti stvorena naša spremišta. Ako ovaj direktorij ne postoji (što je najvjerojatnije slučaj), kreirajte ga pomoću:

    
    mkdir -p /websrv/svn
    

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

  2. Direktiva AuthUserFile označava datoteku u kojoj će biti pohranjene vjerodajnice važećeg korisnika. Ako želite svima dopustiti pristup SVN-u bez provjere autentičnosti, uklonite posljednja četiri retka u bloku Lokacija. Ako je to slučaj, preskočite 2. korak i prijeđite izravno na 3. korak.
  3. Iako biste mogli doći u iskušenje da ponovno pokrenete Apache kako biste primijenili ove nedavne promjene, nemojte to učiniti još jer još uvijek trebamo stvoriti datoteku za provjeru autentičnosti s valjanim korisnicima za SVN i samo spremište.

Korak 2 – Dodajte dopuštene korisnike za pristup SVN-u

Sada ćemo koristiti htpasswd za stvaranje lozinke za račune kojima će biti dopušten pristup SVN-u. Samo za prvog korisnika trebat će nam opcija -c.

Dopušteni računi i lozinke šifrirane bcryptom (-B) bit će pohranjene u /etc/httpd/subversion-auth u parovima ključ-vrijednost. Imajte na umu da se prema današnjim standardima zadana enkripcija MD5 ili SHA koju koristi htpasswd smatra nesigurnom.


------------------ 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 dopuštenja za datoteku za provjeru autentičnosti:


------------------ 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 stvorite SVN spremište

Budući da ćete SVN-u pristupati putem web sučelja, morat ćete dopustiti HTTP (i po izboru HTTPS) promet kroz vaš vatrozid.


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

Ponovnim učitavanjem konfiguracije vatrozida s --reload, trajne postavke odmah stupaju na snagu.

Napravite 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, trebat ćete promijeniti sigurnosni kontekst /websrv/svn/tecmint (imajte na umu da ćete morati ponoviti ovaj korak ako kasnije odlučite stvoriti 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: Zadnje dvije naredbe možda se neće primijeniti ako instalirate SVN na VPS s onemogućenim SELinuxom.

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

Ponovno pokrenite Apache i provjerite je li spremište dostupno.


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

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

Zatim pokrenite web preglednik i usmjerite ga na http://192.168.0.100/svn/tecmint. Nakon unosa vjerodajnica za valjanog korisnika kojeg smo stvorili u 1. koraku, izlaz bi trebao biti sličan ovome:

U ovom trenutku nismo dodali nikakav kod u naš repozitorij. Ali to ćemo učiniti za minutu.

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 s https://tortoisesvn.net/downloads.html.

Odaberite arhitekturu (32 ili 64-bit) koja odgovara vašem računalu i instalirajte program prije nastavka.

Korak 5 – Postavite SVN repozitorij na klijentskom računalu

U ovom koraku koristit ćemo mapu pod nazivom webapp unutar Dokumenata. Ova mapa sadrži HTML datoteku i dvije mape pod nazivom skripte i stilovi s Javascript i CSS datotekom (script.js odnosno styles.css) koje želimo dodati kontroli verzija.

Desnom tipkom kliknite webapp i odaberite SVN Checkout. Ovo će stvoriti lokalnu kopiju udaljenog repozitorija (koje je trenutno prazno) i inicijalizirati mapu za kontrolu verzija:

U URL spremišta upišite http://192.168.0.100/svn/tecmint i provjerite je li lokalni direktorij za naplatu ostao isti, zatim kliknite OK:

Unesite korisničko ime i lozinku (pogledajte 2. korak) i kliknite U redu:

Bit ćete upitani želite li izvršiti naplatu u imenik koji nije prazan. Potvrdite za nastavak naplate. Nakon dovršetka, pokraj naziva mape pojavit će se zelena kvačica:

Korak 6 – Obavite promjene i implementirajte datoteke u udaljeno SVN spremište

Ponovno kliknite desnom tipkom miša na webapp i odaberite Commit ovaj put. Zatim napišite opisni komentar kako biste kasnije identificirali ovu predaju i provjerite datoteke i mape koje želite rasporediti u repozitorij. Na kraju kliknite OK:

Ovisno o veličini datoteka, commit ne bi trebao trajati dulje od minute. Kada je dovršen, vidjet ćete da smo sada na reviziji 1, koja odgovara verziji i datotekama navedenim u web sučelju:

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

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

Sažetak

U ovom smo članku objasnili kako instalirati i konfigurirati Apache Subversion poslužitelj spremišta na CentOS 7 poslužitelju i kako unijeti promjene u to spremište koristeći TortoiseSVN<.

Imajte na umu da SVN i TortoiseSVN ima puno više od onoga što ovdje možemo adekvatno pokriti (posebno kako se vratiti na prethodne revizije), tako da biste se mogli obratiti službenom dokumenti (SVN i TortoiseSVN) za više informacija i konfiguracijske slučajeve.

Kao i uvijek, ne ustručavajte se javiti nam ako imate pitanja! Slobodno upotrijebite obrazac za komentare u nastavku kako biste nam se obratili bilo kada.