Gehe zu deutscher Webseite

ViaThinkSoft CodeLib

This article is in:
CodeLibHow-TosSubversion

Dieses HOWTO richtet sich an diejenigen, die das Versionsmanagement-Tool "Subversion" auf ihrem eigenen Linuxrechner einrichten möchten und zugleich das SVN-Repository im Internet freigeben möchten (entweder an alle oder nur an berechtigte Benutzer).
Ich habe es absichtlich kurz & bündig gehalten und nur die wesentlichen Aspekte angesprochen, damit unerfahrene Benutzer nicht mit unnötigen Fakten verwirrt werden und somit auch ein schneller Einstieg möglich ist.

Kurze Übersicht zu Subversion

Subversion ist eine sogenannte Versionsmanagement-Software.
Diese kann sich dann als nützlich erweisen, wenn mehrere Entwickler an einem Softwareprojekt arbeiten. Der Quelltext wird hierbei an einem zentralen Ort gespeichert (euer Linux-Server), so dass jeder, der darf, Zugriff erhält und Änderungen durchführen kann.
Dass es Probleme bei einem gleichzeitigen Verändern der gleichen Datei geben kann, ist wohl jedem klar - Abhilfe schafft hierbei auch Subversion, weil es im Prinzip weiß, wer zu welchem Punkt was an welcher Datei geändert hat und aufpasst, dass Änderungen von Entwickler A nicht mit Änderungen von Entwickler B kollidieren.
Desweiteren ist es mit Subversion jederzeit möglich, auf frühere Softwareversionen zuzugreifen, da - wie bereits erwähnt - alle Änderungen protokolliert werden und so nachvollziehbar sind.

Subversion unter Debian/Ubuntu/etc. installieren
Unter Debian und Ubuntu gibt es das schöne Tool "apt" zum installieren von Software. Ich persönlich bevorzuge "aptitude", da man dort eine interaktive Oberfläche hat und sich das Programm zudem die Paketabhängigkeiten merkt. Natürlich muss man sich ein paar Tastenbefehle merken (Shift+7 ("/") = Paket suchen, "+" = Paket installieren, "-" = Paket deinstallieren, "u" = Quellen aktualisieren, Shift+u ("U") = Updates installieren, "g" = Markierte Pakete herunterladen/installieren, etc.).
In anderen Linux-Distributionen gibt es sicherlich auch gute Paketsysteme (z.B. yast unter Suse).

apt-get install subversion
Die Einsteigervariante, um Subversion zu installieren.

1.
aptitude
2.
"/" "subversion" [Enter] "+" "g"
Die "saubere" Variante, um Subversion zu installieren.

Subversion vorbereiten
Subversion braucht eine Ablage (ein Verzeichnis), um sein sogenanntes "Repository" zu verwalten. Das Repository ist das Herzstück von Subversion. In ihm speichert Subversion später alle Versionen eurer Quelltexte und verwaltet Änderungen, Versionen, etc.

Sucht euch einen geeigneten Platz für euer Subversion-Repository. Das kann in eurem Homeverzeichnis sein oder wo auch immer.
1.
user@linux:~ mkdir svn
Dieser Befehl erstellt ein Verzeichnis im aktuellen Ordner (in diesem Fall in eurem Home-Directory, dargestellt durch die Tilde ("~")).

2.
user@linux:~ svnadmin create ./svn
Dieser Befehl weist Subversion an, sein Repository in dem neu erstellten Verzeichnis abzulegen.

Jetzt ist alles vorbereitet.

Den Quelltext in Subversion übertragen

Ladet euren Quelltext auf euren Linuxserver. Das könnt ihr per FTP, Samba, NFS, etc. machen. Hauptsache der Quelltext ist irgendwo vorhanden. Wenn ihr eine ZIP-Datei hochgeladen habt, könnt ihr diese mit
user@linux:~ unzip dateiname.zip
im aktuellen Ordner entpacken. Evtl. solltet ihr davor einen neuen Ordner erstellen (mkdir ordner), die ZIP-Datei da rein verschieben (mv dateiname.zip ordner/) und dann dort entpacken.

Jetzt übertragt ihr euren Quelltext in euer Repository, wobei ihr einen aussagekräftigen Projektnamen angeben solltet:
user@linux:~ svn import /pfad_zum_quelltext/ file:///pfad_zum_subversion_repository/Projektname -m "Erster Import"
"/pfad_zum_quelltext/" ist der Pfad, unter dem euer entpackter Quelltext liegt.
"/pfad_zum_subversion_repository/Projektname" ist zum einen der Pfad, in dem das Subversion-Repository liegt und zum anderen euer Projektname (wie gesagt: aussagekräftig sollte er sein!)
"Erster Import" ist ein Freitext - ihr könnt natürlich auch "Ich habe es geschafft" oder "Initial import" eingeben - es bleibt euch überlassen.

Nachdem ihr dies getan habt, verarbeitet Subversion alle Dateien in eurem Quelltext und überträgt diese in ein internes Format, das nur von Subversion gelesen werden kann. "Projektname" ist also kein echtes Verzeichnis sondern nur ein Bezeichner für Subversion, mit dem ihr euer Projekt später ansprechen könnt (man kann selbstverständlich mehrere Projekte in ein Subversion-Repository legen!).

Den entpackten Quelltext könnt ihr jetzt löschen, er wird nicht mehr gebraucht.

Das Repository im Internet zugänglich machen

Um mit eurem Projekt zu arbeiten, ist noch ein kleiner Schritt nötig. Ihr müsst Subversion im Internet verfügbar machen.
Dazu bedient ihr euch dem Tool "svnserve", dass bei Subversion mit dabei ist.

Schauen wir uns zunächst die Konfiguration von svnserve an. Diese liegt im Subversion-Repository!

user@linux:~ cd svn/conf

Mit dem Editor "nano" könnt ihr Dateien editieren, ähnlich Notepad unter Windows.

user@linux:~/svn/conf nano svnserve.conf

In der Datei sind Zeilen, die von svnserve ignoriert werden, mit einer Raute ("#") gekennzeichnet.
Geht die Datei von oben nach unten durch und stellt sicher, dass die entsprechenden Zeilen so aussehen:

anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = Blubb

anon-access sagt aus, ob anonyme User Zugriff auf euer Repository haben dürfen.
auth-access sagt aus, welche Zugriffsrechte authentifizierte User auf euer Repository haben dürfen.
passord-db ist die Datei mit den gespeicherten Passwörtern der Mitglieder.
authz-db ist die Datei, in der weitere Zugriffsrechte geregelt werden.
realm ist die Nachricht, die jeder User beim Zugriff auf euren Subversion-Server bekommt (frei wählbar)

Speichert die Datei mit der Tastenkombination Strg + O und Enter und beendet nano mit Strg + X.

Jetzt müssen wir noch die zwei anderen Configs anpassen:

user@linux:~/svn/conf nano passwd

Hier legt ihr die Logins fest, die Zugriff auf euren Subversion-Server haben sollen:

[users]
victor = victors_passwort
daniel = daniels_passwort
martin = martins_passwort

Wie ihr seht folgt nach dem Benutzername ein "=" und dann das Passwort des Benutzers in Klartext.

Mit Strg+O, Enter und Strg+X speichert und schließt ihr die Datei.

Nun zu authz:

user@linux:~/svn/conf nano authz

[groups]
meineProjektgruppe = victor,daniel

[/Projektname]
* =
@meineProjektgruppe = rw
martin = r

Im oberen Teil könnt ihr Gruppen defnieren. Nach dem Gruppennamen folgt ein "=" und dann die Gruppenmitglieder (aus passwd) mit Kommata getrennt (ohne Leerzeichen).

Weiter unten seht ihr "", Projektname ist das, was ihr am Anfang eingegeben hattet, um den ersten Import in Subversion zu starten. "/" deutet darauf hin, dass sich euer Projekt im Root/in der Wurzel vom Subversion-Repository befindet.

"* =" bedeutet, dass erstmal allen Benutzern der Zugang verwehrt wird.
"@meineProjektgruppe = rw" bedeutet, dass eure Gruppe Lese- und Schreibrechte besitzt ("@" kommt vor Gruppen)
Als kleines Beispiel habe ich noch eine weitere Zeile hinzugefügt. Der User "martin" hat hierbei nur Leserechte in eurem Projekt - er ist nicht Teil der Projektgruppe und darf nichts ändern (r = nur Lesen, rw = Lesen und schreiben).

Nach einem fast schon routinierten "Strg+O, Enter, Strg+X" habt ihr die Konfiguration erfolgreich abgeschlossen.

Nun müsst ihr den Subversion-Internetserver starten. Dazu müsst ihr einen kleinen Hinweis beachten:

user@linux:~/svn/conf svnserve -d --listen-host 123.123.123.123 -r ~/svn

svnserve starten den Subversion-Internetserver.
"-d" bedeutet, dass der Server im Dämon/Dienste-Modus gestartet werden soll.
Nach "--listen-host" kommt die feste IP-Adresse eures Linux-Servers - dies ist wichtig, da svnserve sonst auf IPv6-Verbindungen hört, jedoch nicht auf IPv4. Wenn ihr eine andere Lösungsmöglichkeit dieses Problems wisst, könnt ihr sie gerne posten.
"-r ~/svn" ist auch wichtig. "~/svn" soll natürlich durch das Verzeichnis ersetzt werden, wo euer Subversion-Repository liegt, also dort, wo Subversion alles abspeichert. Wenn ihr diesen Parameter nicht angibt, startet der Server mit dem Verzeichnis "/", das ist nicht gerade schön, weil dann
1. jeder den kompletten Pfad zu eurem Projekt angeben muss (Bsp. .../home/user/svn/Projektname).
2. jeder Zugriff auf fast alle Dateien eures Servers haben könnte (Bsp. .../etc/passwd).
Also, schön mit "-r" einschränken.

Wenn bis jetzt alles glatt gelaufen ist, läuft der Subversion-Server.

Unter Windows könnt ihr das Tool TortoiseSVN benutzen, um auf euer Projekt zuzugreifen.
Wenn ihr einen klugen PC habt, könnt ihr einfach in eurem Browser die URL
svn://IP-oder-Hostname-eures-Servers/Projektname
eingeben. Der Browser sollte dann vorschlagen, TortoiseSVN zu öffnen.

Wenn alles richtig gelaufen ist, könnt ihr euch nun mit den vorher eingestellten Daten einloggen.

SVN benutzen

Jetzt könnt ihr ein bisschen mit Subversion rumexperimentieren.

Wichtig zu wissen: Der Befehl "Checkout" und der Befehl "Commit":

Checkout lädt den aktuellen Quelltext vom Server und speichert ihn lokal, so dass ihr damit arbeiten könnt.
Commit Sendet die geänderten Teile wieder zum Server. Dabei werdet ihr nach einem Kommentar gefragt. Darin könnt ihr angeben, was ihr geändert habt (das ist übrigens auch das, was ihr im initialen Import angegeben hattet - dieser Freitext).

Weiterführende Hilfe zu Subversion gibt es auf anderen Seiten, viel Spaß!
Victor-Phillip Negoescu
ViaThinkSoft Gründer