Applying a patch in a feature branch

このページでは、ローカルの「トピックブランチ」に基づいて、パッチをダウンロードしてローカルのワークスペースに適用するためのワークフローを概説します。

注意: drupalorg-cliツールを使用して課題ブランチを作成し、パッチを適用することもできます。

ローカル リポジトリの準備

  1. 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 amgit amgit format-patchで作成された場合にも有効です。
  • patch.rejファイルを見て、手動で修正できるかもしれません。
  • パッチファイル自体をプロジェクトに追加してはいけないので、*.patch.git/info/exclude ファイルに追加するか、グローバルな ~/.gitignore ファイルに追加することで、Git にパッチファイルを無視させることができます。 あるいは、別の場所にダウンロードすることもできます。
  • パッチを適用しようとしたときにエラーが発生した場合は、次のことを確認してください:
    • パッチの行末のエンコーディングが間違っている可能性があります。 私たちの標準は Unix スタイルの行末エンコーディングを使用することです (Patch Guidelines を参照)。
    • パッチが最新の開発バージョンと一致していない可能性があります。
    • パッチが作成された時点で、自動テストでも適用されないというフラグが立てられていた場合、パッチを作成した開発者のミス (Git を使用していない、最新の開発バージョンを使用していないなど) が考えられます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です