ufozone.de
  • Startseite
  • Autor
  • Suche
  • Kontakt
  • Impressum
XING Profil Twitter Facebook

Technik Mit Hilfe von Subversion die Arbeit erleichtern

Geschrieben von Markus in Administration & Coding am 22.09.2008 um 22:10 Uhr.
Seit dem ich Subversion nutze, arbeite ich merklich effizienter. Durch eine unkomplizierte Handhabung fallen keine überflüssigen Zwischenklicks mehr an. Der wohl größte Vorteil ist jedoch die Versionsverwaltung als solche. Versehntlich gelöschte Dateien lassen sich mit wenigen Klicks wieder herstellen und Änderungen, die unfindbare Fehler herbei führen, lassen sich rückgängig machen, ohne langes Suchen.

Zudem verwende ich die überaus nützlichen SVN Hooks, die standardmäßig bei jedem Repository mit erstellt werden und nur auf die Aktivierung warten. Dadurch erspare ich mir die Übertragung der geänderten Daten per FTP, da nach dem Commit automatisch das Repository auf dem Webserver geupdated wird.

In diesem Beitrag möchte ich einmal die Nutzung von SVN schmackhaft machen und von der Installation bis zur laufenden Website Schritt für Schritt die Einrichtung erklären.


1. Die Installation:
Der Einfachheit halber gehe ich mal von einer Installation via apt-get aus. Mit dem folgenden Befehl sollte die Installation schnell erledigt sein:
code:
1:
www:~# apt-get install subversion


Als Nächstes legen wir ein Verzeichnis an, in dem die Repositories der einzelnen Projekte gespeichert werden sollen:
code:
1:
www:~# mkdir /var/svn


Um den SVN-Server zu starten, ist folgender Befehl notwendig:
php:
1:
www:~# svnserve -r /var/svn -d


Damit svnserve auf beim Neustart des Servers automatisch los rennt, sollte dieser Befehl in die Datei /etc/rc.local eingetragen werden.

Hinweis: Es gibt die Möglichkeit Subversion über einen SSH Tunnel laufen zu lassen. Die Anleitung hierzu folgt später.

2. Benutzer und Rechte:
Im Verzeichnis /var/svn legen wir nun zwei Dateien an, die eine nennen wir passwd und die andere authz.

Inhalt der Datei passwd, welche die Benutzer und ihre Passwörter beinhaltet
code:
1:
2:
3:
4:
5:
6:
[users]
projektname1 = passwort
benutzer1 = geheimespasswort
benutzer2 = password
benutzer3 = testpasswd
benutzer4 = passwd


Inhalt der Datei auth, welche die Berechtigungen der Benutzer beinhaltet
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
# gruppen definieren
# benutzer muessen nicht zwangslaeufig
# in einer gruppe und koennen auch in
# mehreren gruppen sein
[groups]
admin = benutzer1, benutzer2
user = benutzer3, benutzer4
all = @admin, @user

# global darf nur die gruppe admin alles,
# der rest darf nichts
[/]
@admin = rw
@user = 
* = 

# im repository von projekt1 duerfen
# admins und user alles, der benutzer
# "projektname1" darf nur lesen, ebenso
# wie der benutzer4
[projekt1:/]
@admin = rw
@user = rw
projektname1 = r
benutzer4 = r
* = 


3. Repository anlegen und Rechte anpassen:
Nun geht es schon ans Eingemachte. Wir legen das Repository für das erste Projekt an. Das geht mit folgendem Befehl:
code:
1:
www:~# svnadmin create /var/svn/projekt1 


Um auf die vorher erstellte Benutzer- und Rechteverwaltung zurückzugreifen, müssen wir die Kondigurationsdatei /var/svn/projekt1/conf/svnserve.conf des Repository anpassen. Dies ist nicht viel und braucht keine große Erklärung.

Inhalt der Datei svnserve.conf
code:
1:
2:
3:
4:
5:
6:
[general]
anon-access = none
auth-access = write
password-db = ../../passwd
authz-db = ../../authz
realm = projekt1 SVN


Dieser Schritt kann beliebig oft durchgeführt werden, je nach dem, wie viele Repositories benötigt werden.

4. Verzeichnisstruktur bestimmen:
In diesem Schritt ist es ratsam die Verzeichnissturkur festzulegen. Ich erstelle dazu drei Ordner, wie auch im Subversion Buch vorgeschlagen wird. Diese Verzeichnisse heißen branches, tags und trunk. Der Ordner branches stellt die Entwicklungsumgebung da. In diesem Zweig können beliebig viele Entwicklungsrichtungen angelegt werden. Die Entwicklungsumgebung kann man beispielsweise unter dev.projektname1.de verfügbar machen und den Inhalt des Trunk-Ordners, also des Live-Systems entsprechend unter www.projektname1.de.

5. Repository auf dem Webserver auschecken:
Damit die Inhalte des Repository auch von Außen über den Webserver verfügbar gemacht werden können, müssen wir es zunächst ausschecken. Mit dem folgendem Befehl checken wir das Live-System aus:
code:
1:
www:~# svn checkout --username projektname1 --password passwort svn://localhost/projekt1/trunk /var/www/proejekt1/live

Der Webserver vHost der Domain www.projektname1.de sollte dementsprechend auf das Verzeichnis /var/www/proejekt1/live zeigen.

Die Entwicklungsumgebung holen wir uns so:
code:
1:
www:~# svn checkout --username projektname1 --password passwort svn://localhost/projekt1/branches /var/www/proejekt1/dev

Hier muss der vHost der Domain dev.projektname1.de auf das Verzeichnis /var/www/proejekt1/dev zeigen.

Nun haben wir schoneinmal die aktuelle Version des Repository als Website erreichbar gemacht. Damit nun auch alle Änderungen in Echtzeit zu übernehmen ist noch eine Anpassung notwendig.

6. Hook anpassen:
Wie anfangs erwähnt liefert Subversion sogenannte Hooks mit. Diese werden bei einer angestoßenen Aktion von Subversion automatisch ausgeführt. Wir konzentrieren uns hierbei vollkommen auf den post-commit, welcher im Verzeichnis /var/svn/projekt1/hooks zu finden ist.

In diesem Verzeichnis erstellen wir die Datei post-commit, mit folgendem Inhalt:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
#! /bin/bash
branches=`svnlook dirs-changed /var/svn/projekt1 | grep -m 1 branches`
trunk=`svnlook dirs-changed /var/svn/projekt1 | grep -m 1 trunk`

if [[ "$branches" == branches* ]] 
then
	svn update /var/www/proejekt1/dev
fi

if [[ "$branches" == trunk* ]] 
then
	svn update /var/www/proejekt1/live
fi

Dieser Datei geben wir sicherheitshalber die chmod Rechte 0777, damit sie auf alle Fälle nach jedem Commit ausgeführt wird.

Das war es auch schon, denn wenn man es einmal so eingerichtet hat, ist es auch keine Schwierigkeit mehr. Leider finden sich im Internet nur wenige Informationen über die Hooks und deren Einsatzmöglichkeiten, sodass vielen SVN-Nutzern diese hervoragenden Möglichkeiten verborgen bleiben. Sollten noch Fragen offen sein, oder Probleme auftreten, so helfe ich gerne weiter.
Trackbacks:
Technik Tipps und Tricks für Subversion vom 12.05.2009 um 17:17 Uhr

Diesen Beitrag bookmarken:
  • Facebook
  • Twitter
  • myspace
  • Digg
  • Delicious
  • Google
  • Yahoo
  • Blogger
  • Stumbleupon
  • Tumblr
  • Allgemeines
  • Administration & Coding
  • Marketing & Management
  • Büro & Firma
  • Unterhaltung & Spaß

Durchsuche ufozone.de…

Copyright © 2008 - 2012 ufozone.de
Zum Anfang der Seite springen Nach oben