Moin, eventuell gibt es dafür auch andere Lösungen, habe auf die schnelle keine gefunden. Habe heute Morgen einen kleinen Patch-Builder entwickelt, der ermittelt den Unterschied zwischen 2 SVN Revisionen und checkt das Delta in der Original-Verzeichnisstruktur aus. So hat man einen fertigen Patch, den man nur noch komprimieren muss Konfiguration: - SVN-Benutzer / Passwort angeben - Default Repository Start - Default Repository End - Encode - Hier kann man Dateien definieren, die in eine gesonderte Verzeichnisstruktur extrahiert werden sollen. (Zum Beispiel um zu verschlüsselnde Dateien auszulagern) - Im Verzeichnis wo das Script liegt, muss ein Ordner patches mit den entsprechenden Verzeichnisrechten existieren. [code]<?php error_reporting(E_ALL);
ini_set(„display_errors“,1);
$username = „“; // SVN User
$passwort = „“; // SVN Passwort
$defaultStart = „http://192.168.178.150/svn/shopware/tags/release-3.5.0-final_18102010_105900“;
$defaultEnd = „http://192.168.178.150/svn/shopware/trunk“;
$encode = array(
);
if (_POST["start"] && _POST[„end“]){
start = escapeshellarg(_POST[„start“]);
end = escapeshellarg(_POST[„end“]);
$user = escapeshellarg($username);
$passwort = escapeshellarg($passwort);
$diff = array();
$command = „/usr/bin/svn diff --old=$start --new=$end --username $user --password $passwort --non-interactive 2>&1“; exec($command ,$diff); $diff = implode("\n",$diff); $result = array(); preg_match_all("#^Index: (.*)\n#Um",$diff,$result); if (!is_writeable(dirname(__FILE__)."/patches")){ die(„Patch folder not writeable“); } $target = dirname(__FILE__)."/patches/".date(„Ymd_His“); mkdir($target); foreach ($result[1] as $file){ $file = str_replace(array(„Index:“," „),“",$file); echo $file."\n"; if (checkEncoded($file)==true){ $folder = dirname($file); mkdir($target."/encode/".$folder,0777,true); $targetFile = $target."/encode/".$folder."/".basename($file); }else { $folder = dirname($file); mkdir($target."/".$folder,0777,true); $targetFile = $target."/".$folder."/".basename($file); } checkout = escapeshellarg(_POST[„end“]."/".$file); $command = „/usr/bin/svn export $checkout $targetFile --username $user --password $passwort --non-interactive 2>&1“; exec($command ,$diff); } exit; } function checkEncoded($file){ global $encode; foreach ($encode as $check){ $check = addslashes($check); $check = strtolower($check); if (preg_match("#$check#Ui",$file)){ return true; } } return false; } ?>
Start-Revision: | |
End-Revision: |