Wer mit Drupal arbeitet, wird um die Handhabung von Patches leider nicht herumkommen. Gerade für Anfänger ist dies häufig eine Qual. Man identifiziert ein Problem, findet dazu auf drupal.org eine Diskussion und als Lösung werden dort Patches vorgeschlagen, die man dann auch noch alle ausprobieren muss, bis man den richtigen installiert hat.
Eine typische Fehlermeldung, die nach etwas Google-Recherche einen Patch benötigt, ist die folgende (vgl. Abb. 1):
Abb. 1: Diese Fehlermeldung erscheint manchmal im Umfeld von TinyMCE
Nach etwas Stöbern im Netz stößt man schnell auf diese Diskussion. Verschiedene Lösungsansätze werden diskutiert. Am Ende macht sich jemand die Mühe, die Erkenntnisse in einem Patch zusammenzufassen.
Wie kriege man diesen Patch jetzt in sein System?
Zunächst einmal schaut man sich den Patch an (s. Abb. 2).
Abb. 2: Der Patch zum Problem (Auschnitt locale_drupal_http_request-1814980-34.patch)
Ganz oben erkennt man, wohin der Patch gespeichert werden muss. In diesem Fall in das Drupal-Core-Verzeichnis includes, denn er ändert die Datei locale.inc, die in diesem Verzeichnis zu finden ist. Den Patch kopiert man dort irgendwie hin (per FTP-Upload, Git-Download, ...). Er befindet sich jetzt in dem richtigen Verzeichnis und muss dort ausgeführt werden.
Deshalb geht man mit einer Console (Putty, unsere SSH-Console aus diesem Beitrag oder unter Windows mit der cmd.exe-Console) in das Verzeichnis. Dort gibt man ein
patch --help patch -i locale_drupal_http_request-1814980-34.patch
Ich habe oben den Befehl mit --help dazu gegeben, denn der Patch-Befehl funktioniert auf einigen Systemen etwas anders.
Der Parameter -i bedeutet, dass der Patch aus der angegebenen Datei gelesen werden soll. Wenn alles funktioniert hat, gibt die Console folgendes oder ähnliches aus:
patching file locale.inc
Wir belassen den Patch einfach in dem Verzeichnis. Bei jedem von Drupal vorgenommenen Update des (Core-)Moduls wird der Patch nämlich wieder berücksichtigt.
Patchen unter Windows
Wir haben hoffentlich Git unter Windows installiert. Das benötigten wir schon für ein vernünftiges Arbeiten mit Grunt.
In dem Fall können wir den gleichen Patch-Befehl benutzen wie oben. Dies ist einfach (zu merken).
Vielleicht stößt man bei der Recherche auf diese Anleitung z.B. von Drupal-Center, welche die Installation der Programms Cygwin voraussetzt. Der Patch-Befehl dort lautet dann auch etwas anders. Da Git für Windows offensichtlich die besseren Tools für derartige Aufgaben zur Verfügung stellt, benötigen wir Cygwin in unserem Fall jedoch nicht.