このページでは、ローカルの「トピックブランチ」に基づいて、パッチをダウンロードしてローカルのワークスペースに適用するためのワークフローを概説します。
注意: drupalorg-cliツールを使用して課題ブランチを作成し、パッチを適用することもできます。
ローカル リポジトリの準備
- Cloning a Drupal git repository の手順に従って、リポジトリのローカル コピーを作成するか、既存のローカル コピーを最新バージョンに更新します。
git checkout -b - # e.g. 123456-some-bug
パッチ ファイルの取得と適用
課題からパッチ ファイルをダウンロードし、パッチ内のコード変更を作業ディレクトリに適用します (以下のコマンドは、プロジェクトのルート ディレクトリのターミナル ウィンドウにいることを想定しています)。 いくつかの代替手段があります:
また、git apply
コマンドには多くのコマンドライン引数があります。
パッチが適用されず、「Skipped patch …」というメッセージが表示される場合は、git apply
コマンドを試してみましょう。”
patch -p1 < .patch
-R
パラメータを追加して、パッチをリバースします。
patch -R -p1 < .patch
パッチをコミットする
パッチを改善する予定がある場合、次のステップはオリジナルのパッチをローカル リポジトリ ブランチにコミットすることです:
git add FILESAFFECTEDgit commit -m "Patch COMMENTNUMBER by OTHERPERSON”
完了したら。 コードのクリーンアップ
パッチのテストが終わったら、リポジトリを「クリーン」な状態に戻したいと思うでしょう:
- このコマンドを使用してパッチを戻します。
git apply -R path/file.patch
- 作成した機能ブランチを削除するには、このコマンドを使用してください。
git branch -D
Composer
DrupalサイトのコードをComposerで管理していて、そのうちの1つのプロジェクトにパッチが必要になった場合。
* composerを使ってパッチを適用するには、composer-patchesプロジェクトをインストールする必要があります:
composer require cweagans/composer-patches:~1.0 --update-with-dependencies
脚注
git am
git am
git format-patch
で作成された場合にも有効です。patch
.rej
ファイルを見て、手動で修正できるかもしれません。- パッチファイル自体をプロジェクトに追加してはいけないので、
*.patch
.git/info/exclude
ファイルに追加するか、グローバルな ~/.gitignore ファイルに追加することで、Git にパッチファイルを無視させることができます。 あるいは、別の場所にダウンロードすることもできます。 - パッチを適用しようとしたときにエラーが発生した場合は、次のことを確認してください:
- パッチの行末のエンコーディングが間違っている可能性があります。 私たちの標準は Unix スタイルの行末エンコーディングを使用することです (Patch Guidelines を参照)。
- パッチが最新の開発バージョンと一致していない可能性があります。
- パッチが作成された時点で、自動テストでも適用されないというフラグが立てられていた場合、パッチを作成した開発者のミス (Git を使用していない、最新の開発バージョンを使用していないなど) が考えられます。