Offtopic: SVN Patch Builder

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 :wink: 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; } ?>

body { font-size:12px; font-family: Arial; }
Start-Revision:
End-Revision:
[/code]

P.s. Von nun an werden alle Patches kumulativ ausgeliefert - d.h. man kann die Zwischenversionen auslassen und z.B. direkt von 3.5.1 auf 3.5.3 aktualisieren!

[quote=“Stefan Hamann”]P.s. Von nun an werden alle Patches kumulativ ausgeliefert - d.h. man kann die Zwischenversionen auslassen und z.B. direkt von 3.5.1 auf 3.5.3 aktualisieren![/quote] Gibt es da auch eine Dokumentation der Änderungen an den Templates? Das macht z.B. OXID vorbildlich, denn die liefern in dem Update-Package einen Ordner mit aus, in dem man (per HTML-Seite) alle geänderten Template-Dateien sieht, und dann über einen Link zu einem (HTML formatierten) “Diff” jedes einzelnen Templates genau sieht, was sich zwischen den beiden Releases in den Template-Dateien geändert hat. Das ist eine sehr große Hilfe, weil man daraus sieht, welche Template Variablen/Blöcke dazu kamen oder entfielen, oder welche HTML-Änderungen es gab. Und jeder, der mit geänderten Templates arbeitet, muss das wissen, und ohne so ein “Diff” ist das äußerst mühsam… Guckt Euch so ein Updatepackage doch einfach mal an… :sunglasses: