config:

<?php
		// GAME RELATED CONFIG
	
	// SVN SERVER SETTINGS	
	$SVN_USERNAME = "USER";
	$SVN_PASSWORD = "PWD";
	$SVN_URL = "http://svn.............../zelda/";

	// DEPLOYMENT RELATED CONFIG
	$PATH_MAIN = "/....../zelda";
	$PATH_TO_CHECKOUT = $PATH_MAIN . "/svn";
	$PATH_TO_EXPORT =  $PATH_MAIN . "/";
?>

Actual deployment Script:

<?php 

/*
 * REQUIRES http://pecl.php.net/package/svn
 * + subversion on the server 
 */

if(!file_exists("config.php"))
{
	echo "YOU NEET TO RENAME config.php.sample to config.php + set the correct Parameters";
	die();
}
include_once 'config.php';

	svn_auth_set_parameter(SVN_AUTH_PARAM_DEFAULT_USERNAME, $SVN_USERNAME); 
	svn_auth_set_parameter(SVN_AUTH_PARAM_DEFAULT_PASSWORD, $SVN_PASSWORD); 
	
	svn_auth_set_parameter(PHP_SVN_AUTH_PARAM_IGNORE_SSL_VERIFY_ERRORS, true);
	svn_auth_set_parameter(SVN_AUTH_PARAM_NON_INTERACTIVE,              true); 
	svn_auth_set_parameter(SVN_AUTH_PARAM_NO_AUTH_CACHE,                true); 

	svn_checkout($SVN_URL, $PATH_TO_CHECKOUT);
	svn_export($PATH_TO_CHECKOUT, $PATH_TO_EXPORT);
	
	$inFiles = array("lib/impact/impact.js", "lib/game/main.js");
	$outFile = "game.min.js";
	$baker = new Baker( Baker::MINIFIED );
	$baker->bake( $inFiles, $outFile );
	$gamefile = file_get_contents($outFile);
	
class Baker {
	const PLAIN = 0;
	const MINIFIED = 1;
	const GZIPPED = 2;
	
	protected $base = 'lib/';
	protected $format = 0;
	protected $loaded = array();
	protected $currentInput = 'Command Line';
	protected $fileCount = 0, $bytesIn = 0, $bytesOut = 0;
	
	public function __construct( $format = 0 ) {
		$this->format = $format;
		echo "CONSTRUCTOR";
		if( $this->format & self::MINIFIED ) {
			require_once( 'tools/jsmin.php' );
		}
	}
	
	
	public function bake( $inFiles, $outFile ) {
		$this->fileCount = 0;
		$this->bytesIn = 0;
//		$out = "/*! Built with IMPACT - impactjs.com */\n\n";
		$out = "";
		foreach( $inFiles as $f ) {
			$out .=	$this->load( $f );
		}
		
		$bytesOut = strlen($out);
		$bytesOutZipped = 0;
		
		echo "writing $outFile\n";
		@file_put_contents( $outFile, $out ) or
			die("ERROR: Couldn't write to $outFile\n");
		
		if( $this->format & self::GZIPPED ) {
			$gzFile = "$outFile.gz";
			echo "writing $gzFile\n";
			$fh = gzopen( $gzFile, 'w9' ) or
				die("ERROR: Couldn't write to $gzFile\n");
				
			gzwrite( $fh, $out );
			gzclose( $fh );
			$bytesOutZipped = filesize( $gzFile );
		}
		
		
		echo
			"\nbaked {$this->fileCount} files: ".
			round($this->bytesIn/1024,1)."kb -> ".round($bytesOut/1024,1)."kb" .
			( $this->format & self::GZIPPED
				? " (".round($bytesOutZipped/1024,1)."kb gzipped)\n"
				: "\n"
			);
	}
	
	
	protected function load( $path ) {
		if( $this->loaded[$path] ) {
			return '';
		}
		
		if( !file_exists($path) ) {
			die("ERROR: Couldn't load $path required from {$this->currentInput}\n");
		}
		
		echo "loading $path \n";
		$this->loaded[$path] = true;
		$this->currentInput = $path;
		
		$code = file_get_contents( $path );
		$this->bytesIn += strlen($code);
		$this->fileCount++;
		if( $this->format & self::MINIFIED ) {
			$code = trim(JSMin::minify($code));
		}
		
		
		// Naively probe the file for 'ig.module().requires().defines()' code;
		// the 'requries()' part will be handled by the regexp callback
		$this->definesModule = false;
		$code = preg_replace_callback(
			'/ig\s*
				\.\s*module\s*\((.*?)\)\s*
				(\.\s*requires\s*\((.*?)\)\s*)?
				\.\s*defines\s*\(
			/smx',
			array($this,'loadCallback'),
			$code
		);
		
		// All files should define a module; maybe we just missed it? Print a
		// friendly reminder :)
		if( !$this->definesModule ) {
			echo "WARNING: file $path seems to define no module!\n";
		}
		
		return $code;
	}
	
	
	protected function loadCallback( $matches ) {
		$currentInput = $this->currentInput;
		$this->definesModule  = true;
		
		$moduleName = $matches[1];
		$requiredFiles = $matches[3];
		$requiredCode = '';
		
		if( $requiredFiles ) {			
			// Explode the module names and map them to file names. Ignore the
			// dom.ready module if present
			$moduleFiles = array_diff(
				explode(
					',',
					preg_replace(
						'/[\s\'"]|\/\/.*|\/\*.*\*\//', // strip quotes and spaces
						'',
						str_replace('.', '/', $requiredFiles ) // . to /
					)
				),
				array('dom/ready')
			);
			
			foreach( $moduleFiles as $f ) {
				$requiredCode .= $this->load( $this->base . $f.'.js' );
			}
		}
		
		return
			$requiredCode .
			"\n" .
			'ig.baked=true;' .
			'ig.module('.$moduleName.')' .
			( $requiredFiles
				? '.requires('.$requiredFiles.')'
				: ''
			) .
			'.defines(';
	}
}	
?>

the code is far away from beeing optimized or secure .. but its a good start .. if someone wana join me to make that even better .. feel free to hook up over skype : "aspfreak" or pop in to IMPACT IRC

cheers