パッチに取り組む
ハンドブックのこのセクションには、パッチの作成、適用、およびそれらを元に戻す方法を学ぶために役立つチュートリアルが含まれています。
パッチは、あなたのような貢献者が WordPress プロジェクトにコードを提出する唯一の方法です。
バグを修正する場合でも、新機能に貢献する場合でも、コア開発者やコミッターがあなたのコードをリポジトリに含めるかどうか検討するために、パッチが必要です。
WordPress の最新開発版をベータテストする場合、他の貢献者が作成したパッチを適用して、そのパッチが問題を修正しているかどうかを判断する必要があります。
SVN クライアントかコマンドラインインターフェースか ?
多くの開発者は、コマンドラインインターフェイス (CLI) を使って Subversion (SVN) を操作することを好みますが、GUI アプリケーションを使うことを好む人もいます。どちらも問題なく、パッチの作成、適用、およびそれらを元に戻すことができます。
コマンドラインユーザーのために、Cygwin (Windows)、Terminal (Mac)、Bash (Mac) などのプログラムがあります。
GUI アプリケーションを使用する場合、推奨される SVN クライアントは TortoiseSVN (Windows、フリー/オープンソース)、Cornerstone (Mac、有料) です。
Grunt を使ったパッチの作成と適用
作成したパッチを既存のチケットに自動的に提出したい場合は、パッチの作成とアップロードの両方を行うことができる使いやすい Grunt コマンドがあります。このコマンドを使うには、Node.js と Grunt-CLI がグローバルにインストールされている必要があります。また、WordPress の開発依存パッケージがローカルにインストールされている必要があります。これは、npm install
を実行することでインストールできます。
コマンドラインからパッチを適用する
- 作業ディレクトリに diff かパッチファイルを用意して、
grunt patch
を実行します。複数のファイルが見つかった場合、どれを適用するか尋ねられます。 - チケット番号を入力します。
grunt patch:15705
- チケットの URL を入力します。
grunt patch:https://core.trac.wordpress.org/ticket/15705
- パッチの URL を入力します。
grunt patch:https://core.trac.wordpress.org/attachment/ticket/11817/13711.diff
- プルリクエストなどのチェンジセットを指す GitHub の URL を入力します。
grunt patch:https://github.com/muhammadfaizanhaidar/develop.wordpress/pull/23
コマンドラインからパッチをアップロードする
ローカルの WordPress 開発リポジトリに変更を加えた後、パッチファイルを Trac チケットに直接アップロードできます。たとえばチケット番号が2907であるとすると、
grunt upload_patch:2907
WordPress.org の認証情報を環境変数に保存することもできますが、認証情報が漏洩する可能性があるため、このオプションを使用する場合は注意してください !
export WPORG_USERNAME=matt
export WPORG_PASSWORD=MyPasswordIsVerySecure12345
grunt uploadPatch:40000
TortoiseSVN を使ったパッチの作成と適用
開始する前に、次のものが必要です:
- コンピューターにインストールされた TortoiseSVN
- コンピューターにインストールされた Notepad++ のようなプレーンテキストエディター
TortoiseSVN でパッチを作成する
1. ファイルの編集と保存
フォルダーを開き、変更したいファイルを見つけてください。好きなプレーンテキストエディターで開いてください。注意: ファイルの編集には、Word や OpenOffice のようなリッチテキストエディターは使用しないでください。
必要な変更を加えて、ファイルを保存します。
緑色のチェックマークが赤色の感嘆符に変わっていることが分かります。これはファイルが変更され、リポジトリのバージョンと同期していないことを意味します。
2. パッチの作成と命名
次にパッチファイルを作成します。SVN チェックアウトフォルダーのルートディレクトリで右クリックし、SVN Create Patch を選択します。
ルートディレクトリ (WordPress のすべてのファイルが含まれているフォルダー) からパッチを作成することが重要です。そのためには、フォルダー内の空白を右クリックするか、そのフォルダーから1つ上の階層に移動して右クリックします。
ポップアップウィンドウに変更されたファイルのリストが表示されます。パッチに含めたいファイルにチェックが入っていることを確認し、OK をクリックします。
ファイルを保存するプロンプトが表示されます。patches というフォルダーを作成し、保存するファイル名を入力します。形式は ticket#.diff にしてください。
TortoiseUDiff エディターが開き、作成したパッチファイルが表示されます。
TortoiseSVN でパッチを適用する
ローカル環境でパッチをテストしたいですか ? 以下の手順に従ってパッチをテストしてください。
1. パッチのダウンロード
トラブルシューティングやテストプロセスの一環として、あなたが関わっている Trac チケットからパッチをダウンロードして、ローカルの WordPress trunk インストールに適用することが含まれます。
パッチをダウンロードするには、チケットの Attachments セクション (Description セクションのすぐ下) にあるパッチファイル名の横にある Download アイコンをクリックし、patches というフォルダーに保存してください。
2. TortoiseSVN でパッチを適用する
ダウンロードしたパッチを適用するために、WordPress の作業コピーのフォルダー内で右クリックするとコンテキストメニューが表示されます。SVN Apply Patch をクリックしてください。
ファイルを開くダイアログウィンドウが表示され、適用するパッチファイルを選択できます。デフォルトでは、.patch または .diff ファイルだけが表示されますが、探しているパッチファイルが見つからない場合は、ファイルタイプを すべてのファイル に変更できます。
WordPress の作業コピーにパッチファイルを適用する場合は、パッチを作成したときと同じフォルダーの階層で行ってください。正しい作業コピーであるにもかかわらず、間違ったフォルダー階層を選択した場合、TortoiseSVN は正しい階層を提案するメッセージを表示し、それを選択できるようにします。
パッチファイルと正しい作業コピーの場所を選択すると、TortoiseMerge が実行され、パッチファイルの変更が作業コピーにマージされます。小さなウィンドウに、変更されたファイルが一覧表示されます。各ファイル名をダブルクリックし、変更内容を確認し、パッチを適用したファイルを作業コピーに保存してください。
コマンドラインを使ったパッチの作成と適用
この記事では、コマンドラインを使ってパッチを作成、適用、およびそれらを元に戻す手順を説明します。はじめる前に、次のものが必要です:
- Notepad++ (Windows) や TextMate (Mac) などのプレーンテキストエディターがコンピューターにインストールされていること
- SVN 経由でチェックアウトした WordPress trunk のコピー
- コンピューターにインストールされたコマンドラインクライアント:
コマンドラインでパッチを作成する
ベータテスト中に、あなたが修正できるバグに遭遇するかもしれません。しかし、Trac チケットを提出する前に、修正案をパッチとして作成し、チケットに添付する必要があります。
SVN 経由で WordPress がインストールされているフォルダーを開き、変更したいファイルを見つけてください。好きなプレーンテキストエディターでファイルを開いてください。バグを修正するために必要な変更を加えて、ファイルを保存します。圧縮された JS ファイルや RTL CSS ファイルのパッチは作成しないでください。これらはソースファイルから自動的に生成されます。詳細については、このビルドプロセスを参照してください。
次に、パッチファイルを作成します。このパッチファイルは、WordPress trunk のファイルとの差分を記録します。パッチは WordPress SVN インストールのルートディレクトリから作成します。
パッチを作成するには、SVN チェックアウトで作成したルートディレクトリ (wordpress-svn) にいることを確認し、次のコマンドを実行します。ここで、00000
は Trac からのチケット番号に置き換えられます:
svn diff > 00000.diff
作成したパッチを既存のチケットに自動的に提出したい場合は、パッチの作成とアップロードの両方を行うことができる使いやすい Grunt コマンドがあります。このコマンドを使うには、Node.js と Grunt-CLI がグローバルにインストールされている必要があります。また、WordPress の開発依存パッケージがローカルにインストールされている必要があります。これは、npm install
を実行することでインストールできます。
パッチを作成してアップロードする実際のコマンドは次のように機能します:
grunt upload_patch:00000
00000
は Trac のチケット番号に置き換えてください。コマンドの実行中に、wordpress.org のユーザー名とパスワードの入力を求められる場合があります。
コマンドラインでパッチを適用する
トラブルシューティングやテストプロセスの一環として、あなたが関わっている Trac チケットからパッチをダウンロードして、ローカルの WordPress trunk インストールに適用することが含まれます。
パッチをダウンロードするには、Trac のパッチ名の横にある便利なダウンロードアイコンをクリックしてください:
Mac では、デフォルトのダウンロードフォルダーに保存され、そこから選択した wordpress-svn ディレクトリに移動できます。Windows マシンの場合は、選択した場所 (前述のディレクトリ) に保存するように求められます。
コマンドラインでパッチをダウンロードすることもできます。wordpress-svn ディレクトリにいることを確認し、patches フォルダーにパッチをダウンロードしてください。
curl -O https://core.trac.wordpress.org/raw-attachment/ticket/00000/00000.diff
パッチファイルをダウンロードした wordpress-svn ディレクトリからパッチを適用する必要があります。パッチを適用するには、以下のコマンドを使用します:
patch -p 0 < 00000.diff
これで、ダウンロードしたパッチファイルが wordpress-svn のコードに適用され、そのパッチを提出した開発者が作業していたバージョンのコードになります。
このプロセスを少し簡単にするために、既存のチケットからパッチをダウンロードし、それを適用するもう一つの Grunt コマンドがあります。前述したように、このコマンドを使うには、Node.js と Grunt-CLI の両方がグローバルにインストールされている必要があります。また、ローカルでの依存関係も設定する必要がありますが、これは npm install
を実行することでインストールできます。
その後、以下のコマンドを使用できます:
grunt patch:00000
必ず 00000
を Trac のチケット番号に置き換えてください。利用可能なパッチが一つしかない場合、コマンドは自動的にチケットからパッチファイルをダウンロードします。そうでなければ、キーボードの矢印キーを使って、ダウンロードするパッチをリストから選択できます。
コマンドラインでパッチを元に戻す
テストが終了したら、インストールした SVN を最新バージョンの trunk に戻し、適用したパッチや変更点をすべて削除することをおすすめします。すべてのパッチや変更を戻すには、以下のコマンドを使います:
svn revert -R *
GitHub プルリクエストのダウンロード
hub を使用すると、(GitHub などの) Git リポジトリ上の WordPress フォークからプルリクエストをダウンロードすることがとても簡単になります。このセクションでは、このツールをシステムにインストールする必要があります。
これで、hub のバージョンを含むスーパーバージョンの Git が手に入ったので、VVV または WP の trunk フォルダーの public_html
内で次のコマンドを実行できます (例):
git checkout https://github.com/WordPress/wordpress-develop/pull/195
このコマンドは、そこにあるコードでそのブランチを更新する機能を備えており、このプルリクエストの内容を含む新しいブランチを自動的に作成します。
それ以外の場合は、次のようにプルリクエストの URL に .patch
や .diff
を追加することで、プルリクエストのパッチ版や diff 版をダウンロードできます:
git checkout https://github.com/WordPress/wordpress-develop/pull/195`
- https://patch-diff.githubusercontent.com/raw/WordPress/wordpress-develop/pull/195.diff
- https://patch-diff.githubusercontent.com/raw/WordPress/wordpress-develop/pull/195.patch
次のステップ
最終更新日: