パッチの動作
パッチ(または差分)ファイルは、次の点に注意するテキストファイルです。
- 変更するファイル。
- 変更を開始する行番号と変更する行数。
- スワップする新しいコード。
パッチプログラムを実行すると、このファイルが読み込まれ、指定された変更がファイルに加えられます。
パッチには3つのタイプがあります。
- ホットフィックス - Adobeが セキュリティセンターで公開するパッチ。
- 個別パッチ - Adobe Commerce サポートが個別に作成および配布するパッチ。
- カスタムパッチ - Git コミットから作成できる非公式パッチ。
ホットフィックス
修正プログラムは、多くのマーチャントに影響を与える影響の大きいセキュリティまたは品質の修正プログラムを含むパッチです。 これらの修正は、該当するマイナーバージョンの次のパッチリリースに適用されます。 Adobeは、必要に応じてホットフィックスをリリースします。
修正プログラムは、 セキュリティ センターで見つけることができます。 パッチファイルをダウンロードするには、バージョンとインストールタイプに応じて、ページの指示に従います。 コマンドライン またはComposerを使用して、ホットフィックス パッチを適用します。
個別のパッチ
個々のパッチには、特定の問題に対する影響の小さい品質修正が含まれています。 これらの修正は、サポートされている最新のマイナーバージョン(2.4.xなど)に適用されますが、サポートされている以前のマイナーバージョン(2.3.xなど)には反映されない可能性があります。 Adobeでは、必要に応じて個別のパッチをリリースします。
個別のパッチを適用するには、Quality Patches Toolを使用します。
カスタムパッチ
Adobeのエンジニアリングチームが、GitHubで行われたバグ修正をAdobe Commerceの公式リリースに含めるまでに、時間がかかる場合があります。 また、GitHubからパッチを作成し、cweagans/composer-patches プラグインを使用して、それをComposer ベースのインストールに適用することもできます。
カスタムパッチを適用するには、 コマンドライン またはComposerを使用します。
カスタムパッチファイルを作成する方法はたくさんあります。 次の例では、既知のGit コミットからパッチを作成することに焦点を当てています。
カスタムパッチを作成するには:
-
ローカルプロジェクトに
patches/composerディレクトリを作成します。 -
パッチに使用するGitHub コミットまたはプルリクエストを特定します。 この例では、GitHubの問題#6474にリンクされた
2d31571のコミットを使用しています。 -
コミット URLに
.patchまたは.diff拡張機能を追加します。 ファイルサイズを小さくするには、.diffを使用してください。 例:https://github.com/magento/magento2/commit/2d31571f1bacd11aa2ec795180abf682e0e9aede.diff -
ページを
patches/composerディレクトリにファイルとして保存します。 例:github-issue-6474.diff。 -
ファイルを編集し、すべてのパスから
app/code/<VENDOR>/<PACKAGE>を削除して、vendor/<VENDOR>/<PACKAGE>ディレクトリに関連するようにします。note NOTE 末尾の空白を自動的に削除したり、新しい行を追加したりするテキストエディターは、パッチを壊す可能性があります。 単純なテキストエディターを使用して、これらの変更を行います。
次の例は、app/code/Magento/Paymentのすべてのインスタンスを削除した後、前述のDIFF ファイルを示しています。
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;
},
パッチの適用
パッチは、次のいずれかの方法を使用して適用できます。