Subversion er et sporingssystem med åpen kildekode. Den holder filer i et sentralt depot og gir versjonskontroll over kataloger eller filer. Som utvikler kan du hente prosjektfiler fra et depot, gjøre endringer i dem og skyve dem tilbake igjen.

Subversion har også en serverkomponent som du kan bruke til å være vert for prosjektene dine. Det fungerer omtrent som en vanlig filserver.

Hvordan installere Subversion

Subversion er enkel å installere. Du kan bruke den riktige kommandoen for å starte distroen din:

# Debian, Ubuntu
sudo apt installere subversion apache2 libapache2-mod-svn

# CentOS, Fedora, RHEL
sudo dnf installere subversion apache2 mod_dav_svn

Merk at denne kommandoen også installerer Apache2-nettserveren. Du trenger en webserver hvis du vil ha tilgang til Subversion-depotet via HTTP eller WebDAV. Du kan også bruke HTTPS, du trenger bare å installere og konfigurere et digitalt sertifikat for å gjøre det.

Når du har kjørt denne kommandoen, kan du sjekke at subversionen er riktig installert. Du skal nå kunne kjøre

svn kommandoen og du kan se gjeldende versjon ved å bruke --versjon alternativ:

Serverkonfigurasjon med Subversion

Hvis installasjonen gikk problemfritt, kan du nå begynne å jobbe med depotkonfigurasjonen som du vil bruke med svn. Selvfølgelig må du opprette et nytt depot for dette. Først oppretter du en mappe i en rotkatalog for å plassere depotet ditt:

sudo mkdir /subversion

Hvis du trenger å få tilgang til depotet ditt ved å bruke WebDAV over HTTP, må du gi Apache eierskap til katalogen. Siden Apache bruker www-data bruker som standard, autoriser denne brukeren som følger:

sudo chown www-data: www-data /subversion

Du kan nå bytte til www-data bruker og begynn å jobbe med depotet ditt. Kommandoen du vil bruke for å logge på som www-data bruker er:

sudo su -s /bin/bash www-data

Du er nå en Apache-bruker, og etter dette trinnet kan du opprette Subversion-depotet ditt som følger:

svnadmin skape /subversion/myrepo

Du har nå et Subversion-depot. For å gjøre dette depotet litt sikrere og identifisere brukerne, er neste trinn å opprette en bruker og angi et passord for den. For å gjøre dette, bruk følgende kommando:

htpasswd -cmb /subversion/passwd myadmin mypass

I henhold til denne kommandoen vil brukernavnet ditt være minadmin og passordet ditt vil være mypass. Du kan endre disse verdiene til det som passer for dine omstendigheter.

Subversion-depotet ditt er nå klart til bruk. På dette stadiet kan du avslutte www-data bruker ved å bruke exit kommando.

Nå kan du sende et ønsket prosjekt eller fil til repoen din ved å bruke kommandoen nedenfor:

sudo svn import <din-prosjektadressen> file:///subversion/myrepo -m "Første forpliktelse"

Denne kommandoen bruker import parameter for å skyve alt i prosjektmappen til Subversion-depotet. Mens du gjør dette, må du legge til commit-meldingen med -m parameter.

Bruke tilgangsmetoder i Subversion

Du har kanskje lagt merke til at du bruker fil:// protokoll for å legge til et prosjekt til depotet ditt. Dette er bare en av flere nettverksprotokoller du kan bruke for å få tilgang til et svn-lager. Du kan også bruke WebDAV-protokollen over HTTP eller HTTPS, eller subversions egendefinerte svn protokoll.

Direkte tilgang til depotet

Som du har sett, kan du bruke fil:// protokoll for å få tilgang til et lokalt depot. Slik kan du sjekke ut en lokal repo til din nåværende katalog:

svn co-fil:///subversion/myrepo

Når du sjekker ut repoen, viser svn en liste over filene den inneholder:

Tilgang ved hjelp av WebDAV

For å integrere Subversion-depotet ditt med Apache, må du konfigurere noen innstillinger.

For det første trinnet, aktiver dav, dav_svn, og dav_fs moduler ved å bruke følgende kommandoer:

sudo a2enmod dav dav_fs dav_svn

Etter å ha aktivert de nødvendige modulene, kan du nå redigere /etc/apache2/mods-enabled/dav_svn.conf fil. Opprett filen hvis den ikke allerede eksisterer, og endre innholdet som følger:

<Plassering / subversion>
DAV svn
SVNPath /subversion/myrepo
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /subversion/passwd
Krev gyldig bruker
</Location>

De AuthUserFile innstilling refererer til filen du opprettet tidligere med htpasswd. Hvis du legger det til her, vil alle brukere som er navngitt i filen gis tilgang til depotet, forutsatt at de autentiserer med et gyldig passord.

Når du har opprettet og lagret denne filen, start Apache2-tjenesten på nytt med følgende kommando:

sudosystemctlomstartapache2.service

Nå, når du åpner en nettleser og går til http://localhost/subversion/, vil du se innholdet i depotet ditt. Når du går til denne adressen, vil den be om brukernavn og passord:

Logg på med brukernavnet (f. minadmin) og passord (mypass) som du satte opp tidligere. Du kan få tilgang til Subversion-depotet ditt ved å bruke WebDAV etter å ha skrevet inn brukernavn og passord:

Tilgang med SSL og WebDAV

De https:// protokollen har nesten samme konfigurasjon som http:// protokoll, med bare noen få viktige forskjeller. For å gi et eksempel .conf filen du må bruke under konfigurasjonen er annerledes. Du må også installere et digitalt sertifikat. For som du vet, er dette arbeidslogikken til SSL-krypteringsmetode.

Du kan opprette et digitalt sertifikat selv, eller du kan installere en utstedt av en kompetent myndighet. Forutsatt at du har installert et digitalt sertifikat, er det enkelt å gjøre det.

Forskjellen i dette trinnet er endringene du vil gjøre i konfigurasjonsfilen. Nedenfor er et eksempel på konfigurasjonsfil for SSL- og WebDAV-bruk:

<Plassering / subversion>
DAV på
SSLRequireSSL
Alternativer Ingen
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /subversion/passwd
Krev gyldig bruker
</Location>

Som du kan se, forskjellen mellom https:// og http:// protokoller er ikke så mye når det gjelder endringer i konfigurasjonsfilen. Etter disse endringene må du starte på nytt apache2 service. Løpe systemctl restart apache2.service å gjøre slik.

Hvorfor bruke Subversion?

Som en versjonssporing husker Subversion hver endring som er gjort i filer og kataloger. Den lar deg få tilgang til gamle versjoner av programvare eller dokumenter du jobber med og finne forskjellene deres. Dette gjør det enklere å administrere prosjekter, spesielt hvis utviklingsteamet ditt er stort eller distribuert.

Det er mange versjonskontrollsystemer for Linux bortsett fra Subversion, som du kanskje vil vurdere.