WordPress, PHP, JavaScript, Web 2.0, Gaming, Fotografie, Piratenpartei, Schießsport, Privates

SVN per PHP bedienen

Mo 26 Okt. 09 # Permalink

Da ich ja einige WordPress Plugins entwickele und ich mir die Zusammenarbeit mit dem WP SVN Server erleichtern wollte, habe ich für alle Plugins ein kleines PHP Script geschrieben, welche die Änderungen im SVN eincheckt. Klar ginge das auch über ein Shell-Script, aber die PHP Datei kann ich nicht nur auf der Konsole, sondern auch über den Browser aufrufen – manchmal ganz praktisch.

Wenn ich an einem Plugin also nur kleine Änderungen gemacht habe, die ich eben schnell ins Repository schubsen will, dann kopiere ich die geänderten Dateien einfach in den trunk, erhöhe die Version im SVN Script und rufe dieses anschließend auf. Die neue Version wird dann eingecheckt und der neue tag erstellt.

<?php
	// Config
	$plugin_src	= '/home/www/example/src/article2pdf/';
	$svn_home	= '/home/www/example/src/article2pdf/svn/article2pdf/';
	$svn_trunk	= '/home/www/example/src/article2pdf/svn/article2pdf/trunk/';
	$svn_tags	= '/home/www/example/src/article2pdf/svn/article2pdf/tags/';
	$svn_user	= 'the_user';
	$svn_passwd	= 'the_password';

	// Version values
	$version	= '0.27';
	$message	= 'Adding some new functions.';

	// Set home for svn, important, or svn will not work!
	putenv( "HOME=$svn_home" );

	// Up
	echo passthru( "cd $svn_home ; svn up", $ret );
	if( $ret === 0 )
	{
		// Stat
		echo passthru( "cd $svn_home ; svn stat", $ret );
		if( $ret === 0 )
		{
			// Check in trunk
			echo passthru( "cd $svn_home ; svn ci --username $svn_user --password $svn_passwd -m '$message'", $ret );
			if( $ret === 0 )
			{
				// Copy new version to tag
				echo passthru( "cd $svn_home ; svn cp trunk tags/$version", $ret );
				if( $ret === 0 )
				{
					// Stat and check in new version
					echo passthru( "cd $svn_home ; svn stat", $ret );
					echo passthru( "cd $svn_home ; svn ci --username $svn_user --password $svn_passwd -m 'Tagging $version'", $ret );
				}
			}
		}
	}
?>

Wichtig ist per putenv das HOME-Verzeichnis auf den Pfad zum SVN Verzeichnis zu setzen, da SVN über PHP sonst nicht funktioniert. SVN braucht zwingend im Environment eine passende HOME-Angabe. Diese Umgebungsvariable scheint aber standardmäßig von PHP nicht gesetzt zu sein.

Willst du die Kommentare dieses Beitrags verfolgen, kannst du den Kommentar Feed abonnieren. Du kannst auch selbst einen Kommentar hinzufügen, oder einen Trackback von deiner eigenen Seite senden.

Hinterlasse einen Kommentar

Name (Pflichtangabe)

E-Mail, wird NIEMALSNICHT veröffentlicht! (Pflichtangabe)

Webseite

Dein Kommentar