<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Kau-Boys blog &#187; Subversion</title>
	<atom:link href="http://kau-boys.de/tag/subversion/feed" rel="self" type="application/rss+xml" />
	<link>http://kau-boys.de</link>
	<description>Webdevelopment and more</description>
	<lastBuildDate>Sun, 22 Jan 2012 17:33:25 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Ordnerstruktur eines SVN-Repositories richtig aufsetzen</title>
		<link>http://kau-boys.de/1296/webserver/ordnerstruktur-eines-svn-repositories-richtig-aufsetzen?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ordnerstruktur-eines-svn-repositories-richtig-aufsetzen</link>
		<comments>http://kau-boys.de/1296/webserver/ordnerstruktur-eines-svn-repositories-richtig-aufsetzen#comments</comments>
		<pubDate>Sat, 04 Jun 2011 20:11:01 +0000</pubDate>
		<dc:creator>Bernhard</dc:creator>
				<category><![CDATA[Webserver]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://kau-boys.de/?p=1296</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>In meinem letzten Artikel <a href="http://kau-boys.de/1271/webserver/subversion-mit-webdav-auf-einem-ubuntu-server-installieren">Subversion mit WebDAV auf einem Ubuntu Server installieren</a> 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.</p>
<h2>Die Grundlegenge Ordnerstruktur</h2>
<p>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 <a href="http://svnbook.red-bean.com/">SVN-Referenz</a> (<a href="http://svnbook.red-bean.com/nightly/de/">deutsche Übersetzung</a>) beschrieben. Dazu werden im Hauptverzeichnis folgende drei Ordner erstellt:</p>
<p><span id="more-1296"></span></p>
<pre class="brush: plain; gutter: false; title: ; notranslate">
/
	trunk/
	branches/
	tags/
</pre>
<p>Solltet ihr mehrere Projekte in einem Repository verwalten, dann macht es Sinn für jeder eine solche Ordnerstruktur anzulegen:</p>
<pre class="brush: plain; gutter: false; title: ; notranslate">
/
	projekt1/
		trunk/
		branches/
		tags/
	projekt2/
		trunk/
		branches/
		tags/
</pre>
<h2>Neues Repository mit dieser Ordnerstruktur erzeugen</h2>
<p>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.</p>
<p>Zuerst einmal erstellen wir in einem beliebigen Ordner ein neues Repository um dieses anschließend verwenden zu können:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
svnadmin create /var/svn/public/myproject
</pre>
<p>Um nun die notwendigen Verzeichnisse zu erzeugen gibt es zwei Möglichkeiten:</p>
<ol>
<li>Auschecken des Repositories, erzeugen der Ordner und commit der Ordnerstruktur</li>
<li>Direktes erzeugen der Ordner im Repository</li>
</ol>
<p>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:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
cd ~
mkdir project
cd project/
svn checkout http://kau-boys.de/svn/myproject
cd myproject/
mkdir trunk tags branches
</pre>
<p>Jetzt müssen wir die Ordner zum Hinzufügen in das Repository markieren mit dem Befehl <code>svn add</code>:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
svn add trunk tags branches

A         trunk
A         tags
A         branches
</pre>
<p>Jetzt können wir diese Ordnerstruktur in das Repository commiten:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
svn commit -m &quot;Import der initialen Ordnerstruktur&quot;

Adding         branches
Adding         tags
Adding         trunk

Committed revision 1.
</pre>
<p>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):</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
svn mkdir -m &quot;Import der initialen Ordnerstruktur&quot; \
	file:///var/svn/myproject/trunk \
	file:///var/svn/myproject/tags \
	file:///var/svn/myproject/branches

Committed revision 1.
</pre>
<p>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.</p>
<h2>Das richtige Verzeichnis auschecken</h2>
<p>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 <code>svn switch</code> um auf das <i>trunk</i> Verzeichnis zu wechseln:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
cd ~/myproject
svn switch http://kau-boys.de/svn/myproject/trunk

D    trunk
D    branches
D    tags
</pre>
<p>Wie ihr sehen könnt, wurden die Ordner gelöscht, da ihr euch nun &#8220;im Ordner trunk&#8221; befindet. In diesem könnt ihr nun eure Dateien des Projekts commiten.</p>
<p>Wenn ihr die Ordnerstruktur wie in Variante 2 erzeugt habt, dann müsst ihr lediglich das richtige Verzeichnis auschecken. Gebt also direkt den <i>trunk</i> Ordner bei auschecken an:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
cd ~
svn checkout http://kau-boys.de/svn/myproject/trunk myproject

Checked out revision 1.
</pre>
<p>Damit der Ordner aber dabei nicht <i>trunk</i> heißt geben wir beim <i>checkout</i> Befehl gleich den Namen des Ordners an, den unser Projekt nachher haben soll, also in diesem Fall <i>myproject</i>.</p>
<h2>Fazit</h2>
<p>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 <a href="http://svnbook.red-bean.com/en/1.1/ch04.html">Kapitel 4 der SVN-Referenz</a> (<a href="http://svnbook.red-bean.com/nightly/de/svn.branchmerge.html">deutsche Übersetzung</a>) an. Ich mal bei einem Projekt zwar einen Ordner <i>trunk</i> 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 <code>svn move</code> in den Ordner <i>trunk</i> verschieben musste. Dabei bleibt zwar die History aller Dateien erhalten, aber jeder Benutzer musste den Pfad zum Repository aktualisieren und dann in den neuen <i>trunk</i> Ordner wechseln.</p>
<p>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 <img src='http://kau-boys.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://kau-boys.de/1296/webserver/ordnerstruktur-eines-svn-repositories-richtig-aufsetzen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Subversion mit WebDAV auf einem Ubuntu Server installieren</title>
		<link>http://kau-boys.de/1271/webserver/subversion-mit-webdav-auf-einem-ubuntu-server-installieren?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=subversion-mit-webdav-auf-einem-ubuntu-server-installieren</link>
		<comments>http://kau-boys.de/1271/webserver/subversion-mit-webdav-auf-einem-ubuntu-server-installieren#comments</comments>
		<pubDate>Sun, 22 May 2011 12:34:49 +0000</pubDate>
		<dc:creator>Bernhard</dc:creator>
				<category><![CDATA[Webserver]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://kau-boys.de/?p=1271</guid>
		<description><![CDATA[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, [...]]]></description>
			<content:encoded><![CDATA[<p>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 <a href="http://www.howtogeek.com">How-To Geek</a> den Artikel <a href="http://www.howtogeek.com/howto/ubuntu/install-subversion-with-web-access-on-ubuntu/">Install Subversion with Web Access on Ubuntu</a> 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).</p>
<h2>Installieren von Subversion</h2>
<p><span id="more-1271"></span></p>
<p>Die Installationshilfen von Ubuntu machen einem diesen Schritt ja sehr einfach. Zuerst einmal müssen bei meinem frisch installierten Server die Paketquellen aktualisiert werden. Das macht man mit folgendem Befehl (solltet ihr nicht als &#8220;root&#8221; angemeldet sein, müsst ihr eventuell noch &#8220;sudo &#8221; vor diesen und weiter Befehl setzen):</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
apt-get update
</pre>
<p>Anschließend können wir Subversion und die Erweiterung für den Apache-Server installieren, was mit folgendem Befehl passiert:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
apt-get install subversion libapache2-svn
</pre>
<p>Wenn alles geklappt hat ist Subversion auch schon installiert. Um es zu testen könnt ihr den &#8220;svn&#8221; Befehl auf der Konsole testen und dabei auch gleich feststellen, ob das WebDAV Modul verfügbar ist:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
svn --version
</pre>
<h2>WebDAV Ordner einrichten</h2>
<p>Zuerst einmal legen wir ein Verzeichnis an, in dem später all unsere SVN-Repositories abgelegt werden:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
mkdir /var/svn
</pre>
<p>Anschließend erstellen wir einen weiteren Unterordner für alle SVN-Repositories, die wir später per WebDAV freigeben möchten:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
mkdir /var/svn/public
</pre>
<h2>Erzeugen des ersten öffentlichen Repository</h2>
<p>So, nun sind wir bereit unser erstes Repository zu erzeugen und dieses anschließend freigeben zu können. Zuerst einmal müssen wir das SVN-Repository selbst erzeugen. Dies geschieht mit dem Befehl <a href="http://svnbook.red-bean.com/nightly/de/svn.ref.svnadmin.html">svnadmin</a>, genauer gesagt mit dem Unterbefehl <a href="http://svnbook.red-bean.com/nightly/de/svn.reposadmin.create.html#svn.reposadmin.basics.creating">svnadmin create</a>:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
svnadmin create /var/svn/public/myproject
</pre>
<p>Der Befehl erzeugt keine Ausgabe, lass euch also nicht irritieren, wenn da nicht viel passiert. Um zu kontrollieren, ob das Erstellen des SVN-Repositories geklappt hat, seht euch einfach mal den Inhalt des Ordners an:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
cd /var/svn/public/myproject
ls -l

total 24
drwxr-xr-x 2 root root 4096 2011-05-22 13:21 conf
drwxr-sr-x 6 root root 4096 2011-05-22 13:21 db
-r--r--r-- 1 root root    2 2011-05-22 13:21 format
drwxr-xr-x 2 root root 4096 2011-05-22 13:21 hooks
drwxr-xr-x 2 root root 4096 2011-05-22 13:21 locks
-rw-r--r-- 1 root root  229 2011-05-22 13:21 README.txt
</pre>
<h2>Repository über WebDAV freigeben</h2>
<p>Nun müssen wir die Konfiguration des WebDAV Moduls anpassen, damit das Repository von außen verfügbar ist. Dazu öffnen wir die Konfigurationsdatei:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
vi /etc/apache2/mods-enabled/dav_svn.conf
</pre>
<p>Hier müsst ihr in ein paar Zeilen die anführenden Kommentarzeichen entfernen. Eure Konfiguration sollte dann mindestens folgende Zeilen (unkommentiert) enthalten:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
&lt;Location /svn&gt;
  DAV svn
  SVNParentPath /var/svn/public
  AuthType Basic
  AuthName &quot;Subversion Repository&quot;
  AuthUserFile /etc/apache2/dav_svn.passwd
  &lt;LimitExcept GET PROPFIND OPTIONS REPORT&gt;
    Require valid-user
  &lt;/LimitExcept&gt;
&lt;/Location&gt;
</pre>
<p>Nachdem ihr die Konfiguration gespeichert habt können wir den Zugang für euer öffentliches Repository machen. Wir verwenden hier allerdings eine Benutzer-Autorisierung, damit wir den Schreibzugriff auf das Repository einschränken können. Zum Erstellen eines Benutzers wird folgender Befehl verwendet. Gebt dort anschließend zweimal das neue Passwort des Nutzers ein:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
htpasswd -cm /etc/apache2/dav_svn.passwd public

New password:
Re-type new password:
Adding password for user public
</pre>
<p>Damit die Benutzer auch in das Verzeichnis schreiben können, muss es noch auf den Apache-Benutzer übertragen werden, da wir es ja als root erzeugt haben. Das geschieht mit folgendem Befehl:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
chown -R www-data /var/svn/public/
</pre>
<p>Das war es im Grunde auch schon. Was jetzt noch fehlt ist ein Neustart des Apache-Servers, damit die neue Konfiguration auch geladen wird:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
/etc/init.d/apache2 restart
</pre>
<h2>Testen des öffentlichen Repositories</h2>
<p>Jetzt könnt ihr das neue öffentliche Repository testen. Navigiert dazu einfach in eurem Browser auf eine eurer Domains und dort in den Unterordner <code>/svn/myproject</code>. Ihr solltet dann in etwa folgendes sehen:</p>
<p style="text-align: center">
<img src="http://kau-boys.de/wp-content/uploads/2011/05/SVN-Repository-WebDAV.png" alt="SVN-Repository-WebDAV" title="SVN-Repository-WebDAV" style="width: 506px; height: 301px;" />
</p>
<p>Das war es auch schon. Jetzt habt ihr euern eigenen Subversion Server und könnt dort nach Belieben öffentliche Projekte verwalten. Solltet ihr aber mal ein nicht öffentliches Projekt haben, könnte ihr dieses weiterhin über das <code>svn+ssh:</code> Protokoll betreiben. Dazu müsst ihr es einfach nur direkt im <code>/var/svn</code> Ordner ablegen und dann per SSH für bestimmt Benutzer erreichbar machen. Falls Interesse besteht werde ich das in einem separaten Artikel nochmal kurz erklären.</p>
<p>Fragen und Anmerkungen sind wie immer gerne gesehen!</p>
]]></content:encoded>
			<wfw:commentRss>http://kau-boys.de/1271/webserver/subversion-mit-webdav-auf-einem-ubuntu-server-installieren/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anmeldeprobleme per SVN+SSH an einem SVN Repository mit Subclipse beheben</title>
		<link>http://kau-boys.de/899/software/anmeldeprobleme-per-svnssh-an-einem-svn-repository-mit-subclipse-beheben?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=anmeldeprobleme-per-svnssh-an-einem-svn-repository-mit-subclipse-beheben</link>
		<comments>http://kau-boys.de/899/software/anmeldeprobleme-per-svnssh-an-einem-svn-repository-mit-subclipse-beheben#comments</comments>
		<pubDate>Mon, 03 May 2010 11:50:47 +0000</pubDate>
		<dc:creator>Bernhard</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://kau-boys.de/?p=899</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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 <code>svn+ssh</code> Protokoll zur Absicherung der Verbindung.</p>
<p>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.</p>
<p>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:</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
S1ch€resP@ssw0rt
</pre>
<p>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.</p>
<p>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 &#8220;E&#8221; mit dem &#8220;€&#8221;-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</p>
]]></content:encoded>
			<wfw:commentRss>http://kau-boys.de/899/software/anmeldeprobleme-per-svnssh-an-einem-svn-repository-mit-subclipse-beheben/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

