RSS Feed
Jun 4

Ordnerstruktur eines SVN-Repositories richtig aufsetzen

Veröffentlich am Samstag, 4. Jun 2011 in Webserver

In meinem letzten Artikel Subversion mit WebDAV auf einem Ubuntu Server installieren habe ich euch ja gezeigt, wie man den Server für die Subversion Repositories aufsetzt. Nun geht es aber darum, wie man die Ordnerstruktur eines Projekts gestalten sollte. Wenn man hier von Anfang an auf ein paar Grundlegende Best-Practices achtet, dann erleichtert es einem später enorm die Arbeit mit dem Repository.

Die Grundlegenge Ordnerstruktur

Es gibt keine fest vorgegebene Struktur für ein Repository. Es hat sich aber eine Struktur herausgebildet, die von den meisten Projekten, die Subversion einsetzen benutzt wird. Diese wird auch in der SVN-Referenz (deutsche Übersetzung) beschrieben. Dazu werden im Hauptverzeichnis folgende drei Ordner erstellt:

/
	trunk/
	branches/
	tags/

Solltet ihr mehrere Projekte in einem Repository verwalten, dann macht es Sinn für jeder eine solche Ordnerstruktur anzulegen:

/
	projekt1/
		trunk/
		branches/
		tags/
	projekt2/
		trunk/
		branches/
		tags/

Neues Repository mit dieser Ordnerstruktur erzeugen

Am besten erzeugen wir also gleich zu Beginn eines neuen Projekts eine solche Struktur. Gehen wir einfach mal von einem einfachen Repository mit nur einem Projekt aus. Ich möchte euch kurz die notwendigen Befehle aufzeigen um ein Repository für nur ein Projekt mit einer solchen Ordnerstruktur zu erzeugen.

Zuerst einmal erstellen wir in einem beliebigen Ordner ein neues Repository um dieses anschließend verwenden zu können:

svnadmin create /var/svn/public/myproject

Um nun die notwendigen Verzeichnisse zu erzeugen gibt es zwei Möglichkeiten:

  1. Auschecken des Repositories, erzeugen der Ordner und commit der Ordnerstruktur
  2. Direktes erzeugen der Ordner im Repository

Die erste Variante bietet sich an, wenn man gleich mehrere Projekte mit der Ordnerstruktur erzeugen möchte. Ich zeige euch hier kurz, welche Befehle dabei in Unix-Systemen notwendig wären:

cd ~
mkdir project
cd project/
svn checkout http://kau-boys.de/svn/myproject
cd myproject/
mkdir trunk tags branches

Jetzt müssen wir die Ordner zum Hinzufügen in das Repository markieren mit dem Befehl svn add:

svn add trunk tags branches

A         trunk
A         tags
A         branches

Jetzt können wir diese Ordnerstruktur in das Repository commiten:

svn commit -m "Import der initialen Ordnerstruktur"

Adding         branches
Adding         tags
Adding         trunk

Committed revision 1.

Die andere Möglichkeit ist wesentlich einfacher und erfordert nur einen einzigen Befehl. Dieser erzeugt die Ordnerstruktur direkt im Repository. Auch hier wäre es möglich die Ordner gleich für mehrere Projekte anzulegen (was ihr am besten mit mehreren Befehlen macht):

svn mkdir -m "Import der initialen Ordnerstruktur" \
	file:///var/svn/myproject/trunk \
	file:///var/svn/myproject/tags \
	file:///var/svn/myproject/branches

Committed revision 1.

Wie ihr seht ist diese Variante sehr viel einfacher. Gerade für den Administrator eines Repositories ist er praktischer. Man könnte den z.B. den gesamten Prozess zur Erzeugung eines Repositories und der Ordnerstruktur in einem Skript zusammenfassen, dass alle notwendigen Befehle automatisch hintereinander ausführt.

Das richtige Verzeichnis auschecken

Ganz wichtig ist es nun aber, dass ihr auch das richtige Verzeichnis benutzt um euer Projekt zu starten. Solltet ihr die Ordnerstruktur wie in der ersten Variante erzeugt haben, wechselt in eure Working Copy und benutzt dort den Befehl svn switch um auf das trunk Verzeichnis zu wechseln:

cd ~/myproject
svn switch http://kau-boys.de/svn/myproject/trunk

D    trunk
D    branches
D    tags

Wie ihr sehen könnt, wurden die Ordner gelöscht, da ihr euch nun “im Ordner trunk” befindet. In diesem könnt ihr nun eure Dateien des Projekts commiten.

Wenn ihr die Ordnerstruktur wie in Variante 2 erzeugt habt, dann müsst ihr lediglich das richtige Verzeichnis auschecken. Gebt also direkt den trunk Ordner bei auschecken an:

cd ~
svn checkout http://kau-boys.de/svn/myproject/trunk myproject

Checked out revision 1.

Damit der Ordner aber dabei nicht trunk heißt geben wir beim checkout Befehl gleich den Namen des Ordners an, den unser Projekt nachher haben soll, also in diesem Fall myproject.

Fazit

Ihr habt nun also gesehen, wie man eine gute Ordnerstruktur für Subversion-Projekte anlegt. Falls ihr euch aber fragt, wieso das so wichtig ist, dann seht euch mal Kapitel 4 der SVN-Referenz (deutsche Übersetzung) an. Ich mal bei einem Projekt zwar einen Ordner trunk erzeugt aber diesen als Root-Verzeichnis meines Repositories benutzt. Als ich dann (ca. 10000 Commits später) dann doch mal branches einsetzen wollte, bekam ich natürlich Probleme, da ich dann erst die Unterverzeichnisse erzeugt habe und alle anderen Order und Dateien per svn move in den Ordner trunk verschieben musste. Dabei bleibt zwar die History aller Dateien erhalten, aber jeder Benutzer musste den Pfad zum Repository aktualisieren und dann in den neuen trunk Ordner wechseln.

Wenn ihr euch also schon immer zu Beginn eines neuen Projekts die Ordner erzeugt spart ihr euch nachher viel Arbeit. Selbst wenn ihr denkt, niemals so komplex zu werden, dann seht mal in der SVN-Referenz unter dem Stichpunkt Feature-Release nach. So etwas könnte auch euch mal passieren. Also spart nicht an dem einen Befehl und den drei Ordnern :)

Mai 22

Subversion mit WebDAV auf einem Ubuntu Server installieren

Veröffentlich am Sonntag, 22. Mai 2011 in Webserver

Heute ist Tag 1 mit meinem neuen Server und natürlich ist noch nicht alles wieder so, wie es vorher war. Für einige kleine Projekte benötige ich ein SVN-Repository und da ich einen eigenen Server habe lohnt es sich ja auch diesen dafür zu verwenden. Da einige Projekte eventuell auch für die Allgemeinheit verfügbar sein sollen, möchte ich diesmal gleich den Zugriff per DAV ermöglichen, damit nicht immer ein Benutzer angelegt oder ein zentrales Passwort veröffentlicht werden muss. Da die letze Einrichtung auch bei mir schon wieder etwas her ist habe ich bei How-To Geek den Artikel Install Subversion with Web Access on Ubuntu gefunden. Hier nun meine Zusammenfassung zum Umsetzen auf einem Server mit Ubuntu 10.04 LTS (sollte aber auch auf anderen Linux Distributionen ähnlich funktionieren, abgesehen von den Speicherpfaden und der Art der Installation).

Installieren von Subversion

(weiterlesen …)

Mai 3

Anmeldeprobleme per SVN+SSH an einem SVN Repository mit Subclipse beheben

Veröffentlich am Montag, 3. Mai 2010 in Software

Heute mal ein kurzer Tipp zur Verwendung von Subclipse in Verbindung mit einem SVN Repository. Ich habe für ein paar kleine Projekte SVN Repositories aufgesetzt und setze dabei zur Verbindung der Clients mit dem Repository auf das svn+ssh Protokoll zur Absicherung der Verbindung.

Dabei ist heute ein Problem aufgetaucht, für dass ich zuerst keine Lösung finden konnte. Ich habe einen Benutzer angelegt und anschließend ein SVN Repository mit svnadmin erstellt. Den Benutzer habe ich zu einer Gruppe hinzugefügt und dieser Gruppe die entsprechenden Rechte am Repository gegeben. Soweit so gut. Aber beim Versuch das Repository mit Subclipse in Eclipse einzubinden scheiterte dann das Anmelden per SSH.

Ich konnte allerdings von einem anderen Server per Konsole und mit svn+ssh auf das Repository zugreifen. Meine Vermutung war also, dass etwas mit dem Benutzer nicht stimmen muss. Und ich kam dann auch auf die Lösung. Mein Passwort enthielt einige Sonderzeichen als Ersatz für Buchstaben, in etwa so:

S1ch€resP@ssw0rt

Das Problem dabei war das Euro-Zeichen. Dieses ist in zwar im ASCII Zeichensatz enthalten, aber entweder verwendet Subclipse eine andere Zeichenkodierung, oder es unterstützt das Euro-Zeichen schlichtweg nicht. Nachdem ich das Euro-Zeichen durch ein anderes Symbol ersetzt habe, konnte ich mich auch mit Subclipse an meinem SVN Repository per svn+ssh verbinden.

Ich hoffe, ich konnte dem ein oder anderen mit diesem Tipp weiterhelfen, da es bestimmt nicht selten vorkommt, dass man im europäischen Raum ein “E” mit dem “€”-Zeichen ersetzt um ein Passwort etwas sicherer zu machen. Falls ihr auch einen tollen Tipp zu Subversion habt würde ich mich über einen Kommentar wie immer freuen

Impressum