Funktionsweise von Patches

WARNING
Es wird dringend empfohlen, alle Patches in einer Staging- oder Entwicklungsumgebung zu testen, bevor sie in die Produktion bereitgestellt werden. Wir empfehlen außerdem dringend, Ihre Daten vor der Anwendung eines Patches zu sichern. Siehe Sichern und Zurücksetzen des Dateisystems.

Patch-Dateien (oder diff-Dateien) sind Textdateien, die Folgendes beachten:

  • Die zu ändernden Dateien.
  • Die Zeilennummer, die mit der Änderung beginnen soll, und die Anzahl der zu ändernden Zeilen.
  • Der neue Code, der ausgetauscht werden soll.

Wenn das Patch-Programm ausgeführt wird, wird diese Datei gelesen und die angegebenen Änderungen werden an den Dateien vorgenommen.

Es gibt drei Arten von Patches:

  • Hotfixes - Patches, die Adobe im Sicherheitscenter veröffentlicht.
  • Individuelle Patches - Patches, die der Adobe Commerce-Support individuell erstellt und verteilt.
  • Benutzerdefinierte Patches—Unoffizielle Patches, die Sie aus einem Git-Commit erstellen können.

Hotfixes

Hotfixes sind Patches, die für viele Händler wichtige Sicherheits- oder Qualitätsreparaturen enthalten. Diese Fehlerbehebungen werden auf die nächste Patch-Version der entsprechenden kleineren Version angewendet. Adobe gibt bei Bedarf Hotfixes frei.

Sie finden Hotfixes im Sicherheitszentrum. Befolgen Sie die Anweisungen auf der Seite, um die Patch-Datei herunterzuladen, je nach Version und Installationstyp. Verwenden Sie die Befehlszeile oder den Composer, um Hotfix-Patches anzuwenden.

NOTE
Hotfixes können abwärtskompatible Änderungen enthalten.

Einzelne Patches

Einzelne Patches enthalten Korrekturen mit geringer Auswirkung auf die Qualität für ein bestimmtes Problem. Diese Fehlerbehebungen werden auf die zuletzt unterstützte Nebenversion angewendet (z. B. 2.4.x), könnten jedoch in der vorherigen unterstützten Nebenversion (z. B. 2.3.x) fehlen. Adobe veröffentlicht bei Bedarf einzelne Patches.

Verwenden Sie den Quality Patches Tool, um einzelne Patches anzuwenden.

NOTE
Einzelne Patches enthalten keine abwärtskompatiblen Änderungen.

Benutzerdefinierte Patches

Manchmal dauert es eine Weile, bis das Adobe Engineering-Team eine Fehlerbehebung auf GitHub in eine Adobe Commerce Composer-Version einbezieht. In der Zwischenzeit können Sie einen Patch von GitHub erstellen und das Plug-in cweagans/composer-patches verwenden, um ihn auf Ihre Composer-basierte Installation anzuwenden.

Verwenden Sie die Befehlszeile oder den Composer, um benutzerdefinierte Patches anzuwenden.

Es gibt viele Möglichkeiten, benutzerdefinierte Patch-Dateien zu erstellen. Das folgende Beispiel konzentriert sich auf das Erstellen eines Patches aus einem bekannten Git-Commit.

So erstellen Sie einen benutzerdefinierten Patch:

  1. Erstellen Sie ein Verzeichnis mit dem Namen "patches/composer" in Ihrem lokalen Projekt.

  2. Identifizieren Sie die GitHub-Commit- oder Pull-Anforderung, die für den Patch verwendet werden soll. In diesem Beispiel wird der 2d31571 -Befehl verwendet, der mit dem GitHub-Problem #6474 verknüpft ist.

  3. Hängen Sie die Erweiterungen .patch oder .diff an die Commit-URL an. Verwenden Sie .diff für eine kleinere Dateigröße. Beispiel: https://github.com/magento/magento2/commit/2d31571f1bacd11aa2ec795180abf682e0e9aede.diff

  4. Speichern Sie die Seite als Datei im Verzeichnis "patches/composer". Beispiel: github-issue-6474.diff.

  5. Bearbeiten Sie die Datei und entfernen Sie "app/code/<VENDOR>/<PACKAGE>" aus allen Pfaden, sodass sie relativ zum Verzeichnis "vendor/<VENDOR>/<PACKAGE>" sind.

    note note
    NOTE
    Texteditoren, die nachfolgende Leerzeichen automatisch entfernen oder neue Zeilen hinzufügen, können den Patch beschädigen. Verwenden Sie einen einfachen Texteditor, um diese Änderungen vorzunehmen.

Das folgende Beispiel zeigt die zuvor erwähnte DIFF-Datei, nachdem alle Instanzen von app/code/Magento/Payment entfernt wurden:

diff --git a/view/frontend/web/js/view/payment/iframe.js b/view/frontend/web/js/view/payment/iframe.js
index c8a6fef58d31..7d01c195791e 100644
--- a/view/frontend/web/js/view/payment/iframe.js
+++ b/view/frontend/web/js/view/payment/iframe.js
@@ -154,6 +154,7 @@ define(
              */
             clearTimeout: function () {
                 clearTimeout(this.timeoutId);
+                this.fail();

                 return this;
             },

Anwenden von Patches

Sie können Patches mit einer der folgenden Methoden anwenden:

NOTE
Informationen zum Anwenden eines Patches auf ein Adobe Commerce-Cloud-Infrastrukturprojekt finden Sie unter Anwenden von Patches im Leitfaden Commerce on Cloud .
recommendation-more-help
83a60e0e-8849-4685-a8cd-c129ecd795ea