Nachdem ich gestern ein paar Grundzüge der Core-Liste erklärt habe, möchte ich heute etwas ausführlicher darauf eingehen, wie der eingesandte Patch auszusehen hat.
Subversion-Repository auschecken
Nicht unbedingt notwendig, aber sehr vereinfachend ist es, TYPO3 aus dem SVN-Repository auszuchecken:
svn checkout https://svn.typo3.org/TYPO3v4/Core/trunk/ typo3_src
auf der Kommandozeile oder mit einem grafischen SVN-Client, wie z.B. TortoiseSVN unter Windows, zieht die Sourcen des aktuellen Entwicklungsstandes (trunk) direkt aus dem Repository in das Verzeichnis typo3_src.
Lokale Änderungen anzeigen
Lokal durchgeführte Änderungen kann man mit dem Befehl
svn diff
anzeigen lassen und durch Nachstellen von “ > PATCHNUMMER.diff“ in eine Datei schreiben. Selbige Funktionalität bieten auch die meisten grafischen Frontends.
Hierbei wird gleich ein unified diff erzeugt, wie es in der Core-Liste gefordert wird. Bei Nutzung des „normalen“ diff-Kommandos müsste noch der Parameter „-u“ angehängt werden. Das Resultat sieht in etwa folgendermaßen aus:
Index: typo3/backend.php
===================================================================
— typo3/backend.php (revision 6669)
+++ typo3/backend.php (working copy)
@@ -58,7 +58,7 @@
protected $jsFiles;
protected $jsFilesAfterInline;
protected $toolbarItems;
– private $menuWidthDefault = 160; // intentionally private as nobody should modify defaults
+ private $menuWidthDefault = 130; // intentionally private as nobody should modify defaults
protected $menuWidth;
Egal in welchem Unterverzeichnis die Änderungen durchgeführt wurden, das diff muss immer gegen das typo3_src-Verzeichnis gemacht werden – bei Änderungen beispielsweise unterhalb von typo3/ muss der ausgegebene Pfad nach „Index:“ mit typo3/ beginnen.
Die Vorteile für die Patch-Reviewer liegen auf der Hand:
- Das unified diff ist lesbarer, indem einige Zeilen des umgebenden Kontexts mit ausgegeben werden
- Die Festlegung, Patches gegen das typo3_src-Verzeichnis zu erstellen, vereinheitlicht deren Anwendung im eigenen typo3_src-Verzeichnis, ohne lange suchen zu müssen:
patch -i dateiname.diff -p0
Wie gestern beschrieben, wird dieses diff dann an die Liste gesandt (und zusätzlich im Bugtracker hinterlegt).
Ein paar Schlussworte…
Mit meiner kurzen Einführung hoffe ich, einigen Interessierten den Weg in die Core-Liste etwas zu erleichtern. Der Artikel hat keinen Anspruch auf Vollständigkeit und auch wenn bei kleineren Fehlern (nicht angehängter Patch etc.) ab und an mal eine schroffe Antwort oder ein „-1“ kommt: Nicht gleich aufgeben! Jeder hatte irgendwann seinen ersten RFC und der war bei den Meisten sicher nicht perfekt (bitte nicht nach meinem ersten suchen :-P). Einfach nachfragen, was du besser machen kannst und die Vorschläge beherzigen!
In den Mailinglist-Archiven kannst du dir sicherheitshalber auch noch die bereits eingesandten RFCs ansehen.
In diesem Sinne wünsche ich euch allen ein erfolgreiches Einsenden und dass möglichst viele eurer Patches ihren Weg in den Core finden!
P.S: Sollte auf deine Mails keiner Antworten, so darfst du im Wochentakt einen Reminder als Antwort auf die letzte Mail senden.