Subversion mit svnserve unter Linux einrichten - Tutorial
In diesem Tutorial zum Thema "Subversion mit svnserve unter Linux" zeige ich euch,
wie ihr ein Subversion Repository auf eurem Linux V/Root Server anlegt und einrichtet.
Außerdem zeige ich euch kurz, wie ihr es mit TortoiseSVN von eurem Windows Rechner aus verwaltet.
Das Tutorial zu TortoiseSVN findet ihr weiter unten <hier>.
Dieses Tutorial ist für Linux - Debian gedacht, lässt sich aber auf andere Linux Betriebssysteme abwandeln.
Subversion - Was ist das überhaupt?
Das Problem kennt doch bestimmt jeder: Man ändert ein Dokument mehrere Tage lang und auf einmal denkt man sich:
Ach könnte ich doch die Version vor 3 Tagen noch mal sehen und was nachschauen.
TortoiseSVN ist ein Versionskontrollsystem, das sich um dieses Problem kümmert.
Solange man mit reinen Textdateien (.txt, .html, .xml, Programmcode, ?) arbeitet, kann man sich bequem ansehen,
welche Änderungen an einer Datei vorgenommen wurden.
Sogar gelöschte Dateien sind nicht endgültig gelöscht - alles ist wiederherstellbar!
Subversion (dass von TortoiseSVN verwendete System) ist nicht auf einen Computer beschränkt -
gerade wenn mehrere Personen zusammenarbeiten, ist so ein System sehr wertvoll.
In diesem Tutorial erkläre ich euch, wie ihr Subversion auf eurem V/Root Server einrichtet
und wie ihr zu Hause an eurem Rechner TortoiseSVN installiert und dann Subversion verwaltet.
Vor der Benutzung von Subversion & TortoiseSVN muss aber erst einmal das Funktionsprinzip klargemacht werden:
Die Verwaltung selbst findet im Repository statt, das ist eine Art virtuelles Dateisystem.
Im Repository kann man aber nicht direkt arbeiten, um zu arbeiten muss man den Inhalt des Repositories
ersteinmal auschecken. Dabei wird die neueste Version aus dem virtuellen Dateisystem entpackt
und in eine echte Ordnerstruktur kopiert, wo man dann den Inhalt ändern kann (auf dem Rechner zu Hause).
Subversion auf dem Linux Server installieren & einrichten
Zuerst loggen wir uns mit Putty in unserem Linux Server als root-Benutzer ein.
Als aller erstes brauchen wir das Programm Subversion selbst. Dazu geben wir folgenden Command ein und erhalten diese Nachricht:
linux:~# apt-get install subversion
Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: libneon27-gnutls libserf-0-0 libsvn1 Suggested packages: subversion-tools db4.6-util The following NEW packages will be installed: libneon27-gnutls libserf-0-0 libsvn1 subversion 0 upgraded, 4 newly installed, 0 to remove and 25 not upgraded. Need to get 2307kB of archives. After this operation, 6717kB of additional disk space will be used. Do you want to continue [Y/n]?y
Get:1 http://security.debian.org lenny/updates/main libsvn1 1.5.1dfsg1-6 [866kB] Get:2 http://security.debian.org lenny/updates/main subversion 1.5.1dfsg1-6 [1286kB] Get:3 ftp://ftp2.de.debian.org lenny/main libneon27-gnutls 0.28.2-6.1 [121kB] Get:4 ftp://ftp2.de.debian.org lenny/main libserf-0-0 0.2.0-1 [34.4kB] Fetched 2307kB in 0s (4535kB/s) Selecting previously deselected package libneon27-gnutls. (Reading database ... 46918 files and directories currently installed.) Unpacking libneon27-gnutls (from .../libneon27-gnutls_0.28.2-6.1_amd64.deb) ... Selecting previously deselected package libserf-0-0. Unpacking libserf-0-0 (from .../libserf-0-0_0.2.0-1_amd64.deb) ... Selecting previously deselected package libsvn1. Unpacking libsvn1 (from .../libsvn1_1.5.1dfsg1-6_amd64.deb) ... Selecting previously deselected package subversion. Unpacking subversion (from .../subversion_1.5.1dfsg1-6_amd64.deb) ... Processing triggers for man-db ... Setting up libneon27-gnutls (0.28.2-6.1) ... Setting up libserf-0-0 (0.2.0-1) ... Setting up libsvn1 (1.5.1dfsg1-6) ... Setting up subversion (1.5.1dfsg1-6) ...
Danach erstellen wir ein neues Verzeichnis z.B. /home/svn und erstellen dort mit Subversion ein Repository.
linux:~# cd /home
linux:~# mkdir svn
linux:~# svnadmin create ./svn
Jetzt erstellen wir noch für Subversion einen eigenen Benutezr und eine eigene Gruppe:
linux:~# groupadd subversion
linux:~# useradd -g subversion -d /home/svn -s /bin/bash svn
linux:~# chown -R svn:subversion /home/svn
linux:~# chmod 770 -R /home/svn
Jetzt haben wir eine Gruppe namens subversion und einen Benutzer,
der der Gruppe programme angehört (-g <Gruppe>), den Homepfad /home/svn (-d <Homepfad>),
in der Shell /bin/bash (-s <Shellpfad>) läuft und den namen svn hat erstellt.
Außerdem haben wir ihm noch die Rechte auf das Verzeichnis /home/svn gegeben.
Jetzt erstellen wir einen Ordner mit einer Datei und importieren das erste Projekt in das Repository.
linux:~# cd /home
[i] Taste drücken, um in den Schreibmodus zu wechseln
linux:~# mkdir Test
linux:~# cd Test
linux:~# vi testfile
Jetzt folgendes einfügen:
Dies ist eine Testnachricht und der erste Import.
mit [esc] den Schreibmodus beenden und mit :wq abspeichern & beenden.
linux:~# svn import /home/Test/ file:///home/svn/Projekt1 -m "Erster Import"
Adding /home/Test/testfile
Committed revision 1.
Mit "svn import" importieren wir, wie der Name schon sagt die Datei in das Repository.
Der erste Pfad gibt die Datei/den Ordner an, der in das Repository hineinimportiert werden soll.
Der 2. Pfad gibt an, wo das Repository liegt und wie das Projekt lauten soll.
Mit -m "" geben wir noch eine Nachricht mit, was wir gemacht haben.
Jetzt müssen wir noch im Repository die richtigen Rechte und Pfade einstellen.
linux:~# cd /home/svn/conf
Commands wie folgt auskommentieren und ändern: (mit i in den Schreibmodus wechseln)
linux:~# vi svnserve.conf
anon-access = none
mit [esc] den Schreibmodus beenden und mit :wq abspecihern & beenden.
auth-access = write
password-db = passwd
authz-db = authz
realm = Erstes Repository
Jetzt haben wir die Rechte beschränkt und müssen noch einen Benutzer anlegen.
linux:~# vi passwd
(i drücken für den Schreibmodus und einen Benutzer erstellen)
[users]
[esc] Taste drücken, um den Schreibmodus zu beenden und mit :wq abspecihern & schließen.
Benutzer1 = password
z.B. Dennis = meinpw
Wie ihr seht, könnt ihr hier einen oder mehrere Benutzer erstellen und diesen mit = password ein Passwort vergeben.
Jetzt müssen wir diesem Benutzer noch Rechte vergeben.
linux:~# vi authz
(das von vorhin beim importieren mit Projekt1)
[groups]
meineProjektgruppe = Benutzer1,Benutzer2
[/Projektname]
* =
(wieder abspeichern & beenden)
@meineProjektgruppe = rw
Tester = r
Im oberen Teil könnt ihr eine oder mehrere Gruppen defnieren.
Nach dem Gruppennamen folgt ein "=" und kann man die Gruppenmitglieder hinzufügen
(aus der Datei "passwd") mit Kommata getrennt (ohne Leerzeichen).
Weiter unten steht dann "[/Projektname]", der 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 Verzeichnis vom Subversion-Repository befindet.
"* =" bedeutet, dass erstmal allen Benutzern der Zugang verwehrt wird.
"@meineProjektgruppe = rw" bedeutet, dass eure Gruppe Lese- und Schreibrechte besitzt (Das "@" Zeichen kommt vor Gruppen).
Als kleines Beispiel habe ich hier noch den Benutzer "Tester" hinzugefügt, dieser hat nur Leserechte
- er ist nicht Teil der Projektgruppe und darf somit nichts ändern (r = nur Lesen, rw = Lesen und schreiben).
So zu guter Letzt müssen wir noch den Subversion Internetserver starten:
linux:~# svnserve -d --listen-host 111.222.333.444 -r /home/svn
svnserve starten den Internetserver.
"-d" bezweckt, dass der Server iin einem Dämon - dauerhaft gestartet werden soll.
Nach "--listen-host" kommt die feste IP-Adresse eures Linux-Servers - dies ist wichtig,
da svnserve sonst auf die Verbindungen-IPv6 hört und nicht auf IPv4.
Mit "-r /home/svn" geben wir noch den Homepfad von Subversion mit, also wo das Repository liegt,
dies ist auch wichtig, denn wenn ihr diesen Parameter weglasst, startet der Server im Verzeichnis "/",
was nicht gerade Vorteilhaft ist, weil sonst:
1. immer der komplette Pfad zum Projekt angegeben werden muss
(z.B.
2. jeder Zugriff auf fast alle Dateien und Ordner auf eurem Linux Server haben könnte.
Deshalb auch mit "-r" die Rechte einschränken.
Wenn jetzt alles geklappt hat sollte euer Subversion Server laufen. Wie ihr ihn nun verwendet,
zeige ich euch unter der Überschift TortoiseSVN.
TortoiseSVN einrichten & Subversion verwalten
Zunächst müssen wir das Programm "TortoiseSVN" installieren.
Das Programm kann auf der Website http://tortoisesvn.net/downloads
kostenlos heruntergeladen werden.
Das Programm integriert sich automatisch in den Windows Explorer (dazu ist ein Neustart erforderlich).
Wenn das Programm erfolgreich installiert wurde, können wir zum Repository auf unserem Linux Server verbinden.
Dazu erstellen wir zunächst auf unserem Rechner einen Ordner, der z.B. den Namen des Projektes vom Repositories hat.
Anschließend drücken wir auf diesen Ordner rechtsclick und wählen "SVN Checkout" aus.
Dann erhalten wir dieses Fenster. Bei "Url of repository" tragen wir den Linux Server ein
(die ip oder homepage), dürfen aber am Anfang nicht svn:// vergessen.
Falls ihr vorhin, als wir den Internetserver gestartet haben den Pfad zum
Repository nicht angegeben habt, müsst ihr jetzt in etwa so fortfahren: svn://111.222.333.444/home/svn/Projekt1.
Dann wird nach einem Benutzer und nach einem Passwort gefragt. Hier müsst ihr einfach den Benutzer eintragen,
den ihr vorhin in die Datei "passwd" hineingeschrieben habt.
Wenn wir dann in den Ordner "Projekt1" hineingehen müssten wir in etwa folgendes vorfinden:
Der Ordner .svn ist versteckt. Wenn bei euch versteckte Dateien nicht angezeigt werden,
findet ihr dementsprchend auch nur die Datei "Testfile" im Ordner.
Jetzt öffnen wir die Datei "Testfile" und verändern ein paar Zeilen. Einfach 1-2 Sätze dazuschreiben.
Wenn wir das gemacht haben speichern wir die Datei ab und es müsste sich folgendes verändern:
Jetzt zeigt Subversion/TortoiseSVN an, dass die Datei verändert wurde und noch nicht ins Repository eingecheckt wurde.
Um die Datei ins Repository hochzuladen, drücken wir rechtsclick --> SVN commit
Anschließend erhalten wir folgendes Fenster:
Hier können wir nun oben eine kleine Nachricht hinterlassen, was wir geändert haben.
Bei Recent Message können wir dann auch alte Nachrichten wieder verwenden
(jetzt noch nicht, wir haben ja noch nie eine Nachricht geschrieben).
Einen Kasten weiter unten, sehen wir dann die Dateien, die wir geändert haben und können diese dann aus- oder abwählen,
was wir halt hochladen möchten. Wenn wir das gemacht haben bestätigen wir noch mit ok
und unsere Datei wird hochgeladen und ins Reporitory "eingecheckt".
Falls ihr 2 Computer zu Hause habt und immer die aktuellen Stände auf beiden Rechnern haben wollt,
könnt ihr auch auf eurem 2.Computer ebenfalls SVN Checkout machen (siehe oben) und das Projekt
an beiden Computern verwalten.
Wenn mehrere Personen an einem Projekt arbeiten, solltet/müsst ihr jedes Mal,
bevor ihr loslegen wollt rechtsclick und "SVN Update" auswählen,
damit ihr die aktuellen Stände bekommt, falls eine andere Person Dateien geändert hat.
Wenn ihr SVN Update gedrückt habt, erhaltet ihr eine Box, inder angezeigt wird, was verändert wurde.
Bei mir ist dort noch keine Veränderung vorhanden, weil ich SVN bis jetzt bei diesem Projekt nur auf einem Computer nutze.
Der Vorteil von SVN ist bei einem Computer, dass alles wiederherrstellbar ist. Wenn ich jetzt z.B. eine Datei lösche,
ist sie noch nicht gelöscht, sondern wiederherrstellbar.
Man kann auch geänderte Dateien wieder herrstellen lassne usw. ...
So, das war jetzt ein kleines Tutorial zu Subversion & TortoiseSVN, ich hoffe,
bei euch hat alles geklappt und ihr habt auch verstanden, wie's funktioniert.
Falls nicht, könnt ihr gerne unten im Gästebuch schreiben!
Wie ihr Subversion lokal unter Windows nutzt oder noch Webaccess vergebt findet ihr hier:
- Subversion lokal unter Windows nutzen
- Subversion mit Webaccess einrichten
Kommentare anzeigen - Nachricht erstellen - Admin
Markus #8
(Donnerstag, 20.12.2012 14:57)
Hallo,
du hast ein svnadmin create Projekt1 im repos Verzeichnis vergessen. Ohne dem create funktioniert der import nicht.
Ansonsten eine sehr gelungene Anleitung! Danke dafür!
Gruß
Markus
DO9MBS - Markus Bühler
Dennis #7
(Freitag, 22.07.2011 17:47)
Hi,
weis leider nicht genau an was das liegt. Ich hab zwar auch lange gebraucht, bis Subversion bei mir funktioniert hat, aber so einen Fehler hatte ich leider nie.
Könnte dir auch nur helfen, wenn ich selbst googlen würde
Naja viel Glück dann mal, das du den Fehler beheben kannst.
Grüße
Fasibio #6
(Freitag, 22.07.2011 17:45)
Ja der lokale Import hat funktioniert.
Ich Connecte mit svn auf den Server.
Im Internet hab ich zwar noch keine Lösung gefunden,
aber ich werde bestimmt eine finden.
Dachte nur vielleicht weißt du warum es nicht funktioniert.
Gruß
Dennis #5
(Freitag, 22.07.2011 14:24)
Hmm,
ich selber lass es auch nicht mit https laufen. Siehst du ja auch oben im Tut, ich connecte mit svn://ip-adresse/Projekt
Und bei mir gehts ja auch, hat bei dir eig. das lokale importieren geklappt:
svn import /home/Test/ file:///home/svn/Projekt1 -m \\"Erster Import\\"?
Wie connectest du auf deinen Server? per svn:// per http, ...?
fasibio #4
(Freitag, 22.07.2011 12:50)
Der Fehler den ich bekomme lautet
There has been a problem contacting the server
ich vermute der fehler kommt weil es nicht über https laufen hab kann das sein ?
Dennis #3
(Donnerstag, 21.07.2011 13:25)
Hi,
sorry das ich mich erst jetzt melde. Hab leider gerade nicht viel Zeit. Was genau kommt den, wenn du die Logdatei öffnen willst? Was kommt den genau, dass du keinen Zugriff hast?
Grüße
fasibio #2
(Dienstag, 19.07.2011 19:42)
Hallo,
super Anleitung.
Funktioniert auch alles, jedoch kann ich nicht auf die Logdatei zugreifen.
Hoffe man kann mir helfen
Dennis #1
(Donnerstag, 28.04.2011 09:25)
Hier habt ihr die Möglichkeit uns ein kleines Feedback zu geben und bitte sagt uns, was ihr von diesem Tutorial zu Subversion & TortoiseSVN haltet!
Falls ihr noch Informationen/Verbesserungsvorschläge habt, die zu diesem Thema interessant sind, könnt ihr diese gerne hier posten.