* @param 1 revision number. single -or- range : Mandatory * @param 2 Target base directory : Optional * @example php svn.export.revision.files.php [target_directory] * @example php svn.export.revision.files.php [target_directory] */ $repoBaseUrl = 'http:///svn'; //The SVN repo URL $repoBaseDir = '/trunk/....'; //Repo Base directory $targetBaseDir = '/tmp/svndump'; //Directory to which the files to be exported. $localCheckoutDir = '/home/raja/coderepo/'; //Local code base (SVN checkout) if($argv[1]) { $revNum = $argv[1]; } else { echo "Revision to export missing"; exit; } if($argv[2]) { $targetBaseDir = $argv[2]; } //Check if the revsion is a range if(strpos($revNum, ':')){ list($revMin, $revMax) = explode(':', $revNum); } else { $revMax = $revNum; } $targetBaseDir = rtrim($targetBaseDir, '/') . '/'; $targetBaseDir .= str_replace(array(':'), '-', $revNum) . '/'; $cmdGetFileList = "svn log {$localCheckoutDir} -qv -r{$revNum} | awk '/\//{print $2}'"; $result = exec($cmdGetFileList, $output); sort($output, SORT_STRING); echo "\n Files fetched \n\t"; $output = array_values(array_unique($output)); print_r($output); foreach ($output as $key=>$val) { $pathBits = pathinfo(str_replace($repoBaseDir, '', $val)); $targetDir = $targetBaseDir . $pathBits['dirname']; if(!is_dir($targetDir)){ exec("mkdir -p {$targetDir}"); } if(isset($pathBits['extension'])){ $cmdSvnExport = "svn export -r{$revMax} {$repoBaseUrl}{$val} {$targetDir}/{$pathBits['basename']}"; exec($cmdSvnExport); } }