<?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>Rainer Bendig &#187; subversion</title>
	<atom:link href="http://mrbendig.com/tag/subversion/feed/" rel="self" type="application/rss+xml" />
	<link>http://mrbendig.com</link>
	<description>Some stuff about developing, the web and social media</description>
	<lastBuildDate>Thu, 02 Sep 2010 21:51:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>

   <image>
    <title>Rainer Bendig</title>
    <url>http://1.gravatar.com/avatar/7ce1993be3038455e79d29f6495ceaef?s=48&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536</url>
    <link>http://mrbendig.com</link>
   </image>
		<item>
		<title>WordPress mit Subversion aktualisieren</title>
		<link>http://mrbendig.com/2008/08/wordpress-subversion/</link>
		<comments>http://mrbendig.com/2008/08/wordpress-subversion/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 18:02:34 +0000</pubDate>
		<dc:creator>Rainer Bendig</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[versionskontrollsysteme]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rainerbendig.com/?p=94</guid>
		<description><![CDATA[<p>Dieser Artikel beschäftigt sich mit einem automatischen Update von Wordpress über das Versionskontrollsystem Subversion. Was ist Subversion? Subversion ist ein sogenanntes Versions-Kontroll-System welches es ermöglicht einfach und unkompliziert... <a href="http://mrbendig.com/2008/08/wordpress-subversion/">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p><em>Dieser Artikel beschäftigt sich mit einem automatischen Update von WordPress über das Versionskontrollsystem Subversion.</em></p>
<p><strong>Was ist Subversion?</strong><br />
<br /> <a href="http://subversion.tigris.org">Subversion</a> ist ein sogenanntes Versions-Kontroll-System welches es ermöglicht einfach und unkompliziert an jede beliebige Version einer bestimmten Datei innerhalb eines Quell-Code-Projekts zu gelangen. Subversion gibt es seit etwa 2000. Alternativen dazu sind unteranderem GIT und CVS.  Subversion gilt als Quasi-Standard der Versions-Kontroll-Systeme. Es ist kostenlos (OpenSource) und es gibt unterschiedliche Clients für Windows, Linux und auch MacOS. Unter Windows dürfte das bekannteste wohl <a href="http://www.tortoisesvn.net">TortoiseSVN</a> sein.</p>
<p>Der Sinn hinter Subversion versteckt sich darin, dass man ein Projekt entwickeln kann, und immer wieder zu einem bestimmten Stand zurückkehren kann, auch noch nach Jahren. Dabei ist keine Änderung innerhalb des Subversion-Archives redundant es werden im Endeffekt nur Änderungen gespeichert, und dann solange durchgeführt, bis Subversion die gewünschte Version der Datei zurückgeben kann. So ist die aktuelle WordPress Version 2.6 entpackt und lauffähig 4,36 MB groß, das komplette Subversion Archiv „nur“ 107 MB groß. Dies hört sich nun viel an, ist aber, wenn man bedenkt wirkliche jede Änderung im Quellcode bis Version x rückgängig machen zu können wirklich nicht viel <img src='http://mrbendig.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>
<strong>WordPress und Subversion</strong><br />
<br /> Automattic Inc. betreibt einen Subversionserver auf dem unter Anderem die Quelltexte für WordPress abgelegt sind. Darüber gestaltet sich der Zugriff auf die Entwicklerversion („bleeding“) und alle vorherigen Veröffentlichungen der Software recht einfach. Um nun WordPress über Subversion zu aktualisieren müssen mehrere Voraussetzungen erfüllt sein:</p>
<ul>
<li><strong>Subversion-Client-Software</strong><br />
Der Subversion Client muss installiert sein. Dies geschieht unter Debian-Abkömmlingen mit dem als root auszuführenden Befehl „apt-get install subversion“. Für ein manuelles aktualisieren von WordPress empfiehlt sich unter Windows Servern die Installation von TortoiseSVN. Für ein Automatisches Update wird allerdings ein Kommandozeilen-Client benötigt, hier bietet sich der Client von Collab.net an, auf den ich mich im weiteren Verlauf auch beziehe.</p>
<li><strong>Shellzugriff bzw. Remotezugriff</strong><br />
Zum Einrichten des Aktualisierungsprozesses wird Shellzugriff (SSH) unter Linux, beziehungsweise Remotezugriff (RemoteDesktop) unter Windows benötigt.</p>
<li><strong>Cronjobs / geplante Tasks</strong><br />
Um eine Automatische Aktualisierung einzurichten benötigen Sie entsprechende Rechte um einen geplanten Task unter Windows beziehungsweise einen Cronjob unter Linux einrichten zu können.</li>
</ul>
<p>Ich biete einen Mirror des WordPress-SVNs an, der im Regelfall jede Stunde aktualisiert wird. Dies dient dazu um die Belastung des Ursprünglichen SVN-Servers zu verringern. Auch wenn es ein OpenSource-Projekt ist, sollte man sich nicht einfach immer nur gedankenlos bedienen. Das Mirrorverzeichnis ist wie folgt zugänglich:</p>
<p>Unter dem Archiv auf http://svn.nyforge.eu/get/WP-Mirror liegt eine direkte stündlich aktuelle Kopie des WordPress SVN Archivs. Hierbei geht die Primäre Auswahl über die sogenannten Tags beziehungsweise nur den Entwickler-Zweig „trunk“. Kommt ein neues WordPress-Release heraus, ist ein manuelles Nacharbeiten notwendig, wenn man trunk nicht verwendet.</p>
<blockquote><p>Als kleine Randanmerkung: Man sollte nur „trunk“ auswählen wenn man sich den Gefahren einer aktuellen Entwickler-Version bewusst ist, und die Risiken entsprechend in Kauf nehmen will. Hierzu gehören unter Anderem plötzliche Änderungen an der Datenbankstruktur die den Blog temporär zumindest unbrauchbar machen können, sowie einfache Fehler in Quelldateien. (So sind zum Beispiel bei der Entwicklerversion von 2.4 auf 2.5 alle eingepflegten Tags verloren gegangen) Ich rate dringendst davon ab, eine Entwickler-Version im Produktivbetrieb einzusetzen. Dennoch beziehen sich die folgenden Beispiele alle auf „trunk“. Wenn man die letzte Stabile Version verwenden will, benutzt man bitte anstatt „trunk“ die Zeichenfolge „tags/2.6“. </p></blockquote>
<p><strong>Backup erstellen!</strong><br /> Auch wenn es sich kleinlich anhört, aber es wird dringend das Erstellen eines kompletten Backups eines bereits bestehenden Blogs empfohlen! Dies beinhaltet:</p>
<ul>
<li>Die Datenbank</li>
<li>Alles was sich im Blogverzeichnis befindet</li>
<li>insbesondere aber den Ordner wp-content, sowie die Datei wp-config.php</li>
</ul>
<p>Erst wenn dieses Backup existiert, sollte man mit der Einrichtung fortfahren.</p>
<p>Ich gehe nun von folgender Situation aus:
<ul>
<li>Der Blog ist oder soll über http://www.example.com/blog erreichbar sein</li>
<li>Das DocumentRoot liegt unter /home/hosts/example-com bzw c:\inetpub\wwwroot\example-com </li>
<li>Das SVN Binary ist unter Windows im Pfad vorhanden.</li>
</ul>
<p><strong>Es geht los!</strong><br />
Als erstes muss das Ursprüngliche Verzeichnis gelöscht werden wenn der Blog bereits existierte, beziehungsweise angelegt werden wenn der Blog neu eingerichtet werden soll.<br />
Unter Linux geschieht dies mit dem Befehl</p>
<pre>rm -Rf /home/hosts/example-com/blog ; mkdir /home/hosts/example-com/blog –p</pre>
<p>Unter Windows kann man dies komfortabel über den Explorer lösen.<br />
Als nächsten Schritt müssen wir die gewünschte Version von WordPress „auschecken“.<br />
Unter Linux ist dies über den Befehl</p>
<pre>svn co http://svn.nyforge.eu/get/WP-Mirror/trunk /home/hosts/example-com/blog </pre>
<p>zu erreichen.<br />
Subversion listet daraufhin alle Dateien auf die heruntergeladen wurden.<br />
 Unter Windows muss man entsprechend den Befehl wie folgt ändern:</p>
<pre>svn co http://svn.nyforge.eu/get/WP-Mirror/trunk c:\inetpub\wwwroot\example-com\blog</pre>
</p>
<p><strong>Einrichtung</strong><br />
Handelt es sich um eine neue WordPressinstallation kann man die Einrichtung von WordPress gemäß der Anleitung von WordPress starten. (Mit dem Browser auf http://www.example.com/blog/wp-admin wechseln und 2 Seiten ausfüllen, fertig.)<br />
Wenn es sich um ein Update einer bereits vorhandenen (und vorher gesicherten) WordPressinstallation handelt ist die Sache etwas komplizierter.<br />
Der geneigte Blogbesitzer muss nun seine wp-config.php aus dem Backupverzeichnis in die neue WordPress installation kopieren. Ebenso muss der Ordner wp-content/uploads, diverse plugins aus wp-content/plugins sowie das verwendete theme aus wp-content/themes/meintollestheme aus dem Backup in die aktuelle WordPress installation kopiert werden, also zum Beispiel</p>
<pre>cp /home/hosts/example-com/blog.bak/wp-config.php /home/hosts/example-com/blog/wp-config.php
cp –rf /home/hosts/example-com/blog.bak/wp-content/uploads /home/hosts/example-com/blog/wp-content
cp –rf /home/hosts/example-com/blog.bak/wp-content/themes/meintollestheme /home/hosts/example-com/blog/wp-content/themes
cp –rf /home/hosts/example-com/blog.bak/wp-content/plugins/TollesPlugin /home/hosts/example-com/blog/wp-content/plugins/TollesPlugin</pre>
<p>Damit ware der Blog nun wieder lauffähig. Im Regelfall muss der Blogeigentümer nun noch die Datenbank aktualisieren, was sich einfach mit einem Klick auf http://www.example.com/blog/wp-admin erledigen lässt.<br />
Aktualisieren kann man den Blog nun über den Befehl</p>
<pre>svn up /home/hosts/example-com/blog </pre>
<p>Beziehungsweise</p>
<pre>svn up c:\inetpub\wwwroot\example-com\blog</pre>
<p>Dies sind auch die Befehle die man entweder in die Crontab unter Linux, oder als geplanten Task einrichtet unter Windows, wenn man in den Genuss einer automatischen Aktualisierung kommen will.</p>
<p><strong>Warum über Subversion aktualisieren?</strong><br />
Die Gründe für ein automatisches Update waren für mich recht simpel: Fehlerbeseitigungen sind schneller eingespielt, und ab 2 Installationen die man zu verwalten hat spart man Zeit <img src='http://mrbendig.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Auch wenn man WordPress testen will, und durch das Verwenden von sogenannten Bleeding-Versionen mithelfen will die Qualität zu verbessern bietet sich dieser Weg nun einmal an. Ein wichtiger Grund dürfte auch einfache stupide Faulheit sein, denn es spart wie gesagt Unmengen an Zeit.<br />
Ich müsste mehrere Blogs händisch auf dem neusten Stand halten, mich um die Sicherheitsupdates kümmern, alles Arbeit die man sich sparen kann.<br />
Sicherlich ist es einmalig ein kleiner Aufwand das ganze einzurichten, aber die Arbeit lohnte sich zumindest für mich. </p>
]]></content:encoded>
			<wfw:commentRss>http://mrbendig.com/2008/08/wordpress-subversion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Subversion und Ignore Pattern für .net Entwickler</title>
		<link>http://mrbendig.com/2008/04/subversion-und-ignore-pattern-fur-net-entwickler/</link>
		<comments>http://mrbendig.com/2008/04/subversion-und-ignore-pattern-fur-net-entwickler/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 08:22:52 +0000</pubDate>
		<dc:creator>Rainer Bendig</dc:creator>
				<category><![CDATA[Einwurf]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[devenv]]></category>
		<category><![CDATA[produktivität]]></category>
		<category><![CDATA[resharper]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[tortoisesvn]]></category>
		<category><![CDATA[versionskontrollsysteme]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://rainerbendig.com/blog/?p=25</guid>
		<description><![CDATA[<p>Ein Ignore Pattern den ich in TortoiseSVN unter Settings -&#62; Global ignore pattern hinterlege spart viel manuelle Auslese von unnötigen Daten innerhalb einer Solution. Der Pattern den ich verwende sieht so aus: _ReSharper.* */obj *.user... <a href="http://mrbendig.com/2008/04/subversion-und-ignore-pattern-fur-net-entwickler/">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>Ein Ignore Pattern den ich in TortoiseSVN unter Settings -&gt; Global ignore pattern hinterlege spart viel manuelle Auslese von unnötigen Daten innerhalb einer Solution.</p>
<p>Der Pattern den ich verwende sieht so aus:</p>
<pre>_ReSharper.* */obj  *.user *.suo</pre>
<p>Das erspart unmengen an Zeit die ich sonst aufbringen müsste um Benutzereinstellungen von VisualStudio/ReSharper aus meiner Solution zu entfernen. Wichtig ist auch die .suo Datei. Diese Datei enthält Einstellungen wie Breakpoints oder Befehlszeilenparameter für den Debugger.</p>
<p><a href="http://static.bytekuenstler.com/BlogFiles/2008/04/2008-04-17-ignore-pattern.jpg" rel="lightbox[199]"><img class="alignnone size-full wp-image-26" title="ignore pattern" src="http://static.bytekuenstler.com/BlogFiles/2008/04/2008-04-17-ignore-pattern.jpg" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://mrbendig.com/2008/04/subversion-und-ignore-pattern-fur-net-entwickler/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
