Diese Seite skizziert einen Arbeitsablauf für das Herunterladen und Anwenden von Patches auf einen lokalen Arbeitsbereich, basierend auf lokalen „Themenzweigen“.
Hinweis: Sie können auch das Werkzeug drupalorg-cli verwenden, um einen Themenzweig zu erstellen und den Patch anzuwenden.
Bereiten Sie das lokale Repository vor
- Befolgen Sie die Schritte unter Klonen eines Drupal-Git-Repositorys, um eine lokale Kopie des Repositorys zu erstellen oder aktualisieren Sie Ihre bestehende lokale Kopie auf die neueste Version.
- Erstellen Sie einen lokalen „Themenzweig“ für das Thema, an dem Sie arbeiten.
git checkout -b - # e.g. 123456-some-bug
Beschaffen Sie eine Patch-Datei und wenden Sie sie an
Laden Sie die Patch-Datei aus der Ausgabe herunter und wenden Sie die Code-Änderungen im Patch in Ihrem Arbeitsverzeichnis an (die folgenden Befehle gehen davon aus, dass Sie sich in einem Terminal-Fenster im Hauptverzeichnis des Projekts befinden). Es gibt mehrere Alternativen:
Außerdem gibt es viele Kommandozeilenargumente für den git apply
-Befehl. Ein nützliches ist -v
, das eine ausführlichere Ausgabe liefert:git apply -v patchname.patch
Weitere Informationen finden Sie in der Dokumentation zu git apply.
Wenn sich der Patch nicht anwenden lässt und Sie vielleicht eine „Skipped patch …“ Meldung erhalten, versuchen Sie es mit dem patch
-Befehl (siehe „Fußnoten“ weiter unten) oder führen Sie den Patch erneut aus:
patch -p1 < .patch
Rückgängig machen Sie den Patch, indem Sie den -R
-Parameter hinzufügen:
patch -R -p1 < .patch
Commit the patch
Wenn Sie vorhaben, den Patch weiter zu verbessern, ist der nächste Schritt das Commit des Originalpatches in Ihren lokalen Repository-Zweig:
git add FILESAFFECTEDgit commit -m "Patch COMMENTNUMBER by OTHERPERSON”
Wenn Sie fertig sind: Codebereinigung
Nachdem Sie den Patch getestet haben, wollen Sie Ihr Repository wieder in einen „sauberen“ Zustand bringen:
- Mit diesem Befehl können Sie den Patch rückgängig machen:
git apply -R path/file.patch
- Benutzen Sie diesen Befehl, um den erstellten Funktionszweig zu löschen:
git branch -D
Composer
Wenn Sie den Code für eine Drupal-Site mit Composer pflegen und eines der Projekte einen Patch benötigt:
* Um Patches mit Composer anzuwenden, müssen Sie das Projekt composer-patches installieren:
composer require cweagans/composer-patches:~1.0 --update-with-dependencies
Fußnoten
- Sie können Patches auch mit
git am
anwenden.git am
ist auch nützlich, wenn die Patches mitgit format-patch
erstellt wurden. - Der
patch
-Befehl ist nützlich für Patches, die nicht angewendet werden, da er den größten Teil des Patches anwendet und Sie dann eventuell in der Lage sind, sich die.rej
-Datei anzusehen, die er für die abgelehnten „Brocken“ des Patches erstellt, und diese manuell zu korrigieren. Wenn das zu kompliziert ist, versuchen Sie, den Patch neu zu rollen. - Da die Patch-Dateien selbst nie zum Projekt hinzugefügt werden sollten, können Sie Git anweisen, sie zu ignorieren, indem Sie die Zeile
*.patch
zur.git/info/exclude
-Datei im Projekt oder zu einer globalen ~/.gitignore-Datei hinzufügen. Alternativ können Sie sie an einen anderen Speicherort herunterladen. - Wenn Sie beim Versuch, einen Patch anzuwenden, Fehler erhalten, überprüfen Sie Folgendes:
- Der Patch hat möglicherweise die falsche Codierung des Zeilenendes. Unser Standard ist die Verwendung der End-of-Line-Kodierung im Unix-Stil (siehe Patch-Richtlinien).
- Der Patch entspricht möglicherweise nicht der neuesten Entwicklungsversion. Wie Sie spätere Änderungen einbinden können, finden Sie unter Patches neu erstellen.
- Wenn die automatische Prüfung den Patch zum Zeitpunkt seiner Erstellung ebenfalls als nicht anwendbar markiert hat, hat der Entwickler, der den Patch erstellt hat, möglicherweise einen Fehler gemacht (z. B. nicht Git oder nicht die neueste Entwicklungsversion verwendet).