Die PEAR-Kolumne

PEAR: How-to für Patches
Kommentare

Der heutige Artikel ist ein kleines How-To für Patches in PEAR. Patches für Fixes und neue Funktionen sind nicht riesige Code-Monolithe unterbeschäftigter Genies, sondern umfassen meist nur wenige, einfache Zeilen aus dem Alltag.

Das können Sie auch, Sie benötigen lediglich eines von zwei Werkzeugen:

  • SVN, um den aktuellen Quellcodestand des PEAR-Packages herunterzuladen
  • oder ein diff-Programm, um eine Patch-Datei zu erstellen.

Dazu noch einen Editor, um Änderungen am Quellcode vorzunehmen, und einen Browser, um ihren Patch zu melden. Auch wenn Sie Dateien direkt aus dem PEAR-SVN ziehen wollen, benötigen Sie dafür keinen SVN-Account. Der Lesezugriff unterliegt keinen Beschränkungen. Ein Account für pear.php.net ist ebenfalls nicht erforderlich, um den Patch zu melden, nur sollten Sie Ihre E-Mail-Adresse zur Hand haben.

Den Quellcode bekommen

Normalerweise werden Sie den Code in Form des installierten Packages bereits vorliegen und den Bug auch bereits darin gefunden haben. Ihr Fix in Ihrem Code hilft Ihnen ohne Probleme, aber sicherlich freuen sich auch andere über Ihre Korrektur, und außerdem wird Ihre Änderung mit dem nächsten Package-Update ohne Vorwarnung überschrieben. Deshalb sollte Ihre Änderung gegen den aktuellen Stand des Package-Quellcodes erfolgen. Sie erhalten ihn mit SVN: svn co <a href="http://svn.php.net/repository/pear/packages//trunk/“ class=“elf-external elf-icon“ rel=“nofollow“>http://svn.php.net/repository/pear/packages//trunk/. Das Trunk-Verzeichnis enthält stets den aktuellen Entwicklungszweig, die Verzeichnisstruktur darin kann von der Verzeichnisstruktur des installierten Packages abweichen.

Datei ändern

Suchen Sie nun die Datei, in der Sie die Änderung einbringen wollen, und öffnen Sie sie in einem Editor Ihrer Wahl. Prüfen Sie als Erstes, ob die Korrektur überhaupt noch notwendig ist – womöglich ist Ihr Bug längt gefixt worden. Wenn Sie die Datei nicht per SVN geholt haben: Speichern Sie die ursprüngliche Datei am besten unter einem anderen Namen. Bei der SVN-Variante überschreiben Sie hingegen die ursprüngliche Datei. Mit der geänderten Datei hingegen sollten Sie nach Möglichkeit die zum Package gehörenden PHPUnit-Tests durchführen, um zu sehen, ob die Veränderung nicht neue Probleme verursacht. Zumindest sollten Sie prüfen, ob sie in Ihrem Programm noch korrekt funktioniert.

Die Patch-Datei erzeugen

Wenn Sie die SVN-Version geändert haben, dann wechseln Sie in das Verzeichnis mit der geänderten Datei und geben Sie auf der Kommandozeile ein: svn diff >MeinPatch.diff. Bei der SVN-losen Variante müssen Sie diff mit dem richtigen Parameter und den Dateien in der richtigen Reihenfolge aufrufen, achten Sie unbedingt auf das kleine -u: diff -u ORIGINAL_DATEI GEAENDERTE_DATEI >MeinPatch.diff. Bis auf die ersten Zeilen ist die erzeugte MeinPatch.diff in beiden Fällen identisch. Die relevanten Zeilen beginnen mit der Angabe der betreffenden Datei und enthalten im Weiteren die Auflistung der Änderungen.

Patch melden

Verwenden Sie nach Möglichkeit immer das Bugtracking-System von PEAR: pear.php.net/bugs/. Es mag seltsam erscheinen, das Bug-System zu verwenden, wo Sie doch gerade den Bug korrigiert haben. Es gibt aber einige Gründe dafür. Zum einem helfen Sie anderen Benutzern, die auch auf den Bug stoßen, zu vermitteln, dass der Fehler bereits erkannt wurde. Zum anderen findet der Patch auf diese Weise auf jeden Fall einen Abnehmer, selbst wenn das Package gerade nicht aktiv betreut wird. Lassen Sie sich nicht von den Feldern des Formulars abschrecken. Sie müssen keine Romane schreiben, gerade wenn Sie bereits einen Patch haben.

Achten Sie darauf, dass sie zum Hochladen der Patch-Datei das Häkchen bei I have files to attach to this report setzen müssen, um nach dem Ausfüllen des Formulars die Datei hochladen zu können.

Wenn die Änderung nur zwei oder drei Zeilen bei einem aktiven Package umfasst, können Sie auch den Inhalt der Datei in das Description-Feld kopieren. Alternativ können Sie die Datei auch per E-Mail verschicken. Die Adressaten sind die PEAR-Mailingliste pear-dev@lists.php.net und zusätzlich in das CC die Maintainer des Packages. Sinnvollerweise sollte der Betreff mit [PATCH] beginnen. Rechnen Sie allerdings damit, dass Ihr Patch dabei untergehen kann.

Und danach?

Wenn Sie das Bugtracking-System verwendet haben, erhalten Sie automatisch eine E-Mail, wenn der Maintainer den Patch angenommen oder weitere Fragen hat. Beim nächsten Package-Release ist dann der Patch mit enthalten. Wenn Sie übrigens häufiger Patches bereitstellen, ist es durchaus möglich, dass Sie darauf angesprochen werden, ob Sie nicht einen regulären PEAR- und SVN-Account bekommen möchten.

Alexander Merz

Seit mehr als drei Jahren implementiert Alexander Merz im Redaktionssystem von Golem.de selbst die kuriosesten Wünsche der Redakteure und baut an der Golem.de-Webseite zur steten Unterhaltung der Leser. Sie erreichen ihn unter alexander.merz@gmail.com.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -