コードリポジトリ (Git)

Alert: WordPress の貢献者は、Git または SVN で作成したパッチを提出できます。このドキュメントは、Git オプションにフォーカスしています。

概要

Git は、もともと Linus Torvalds が Linux カーネルの管理を支援するために作成した分散型バージョン管理システムです。

WordPress の標準的なリポジトリは Subversion で管理されています。Git を使い慣れた開発者をサポートするために、公式で最新の WordPress リポジトリ Git ミラーは git://develop.wordpress.org/https://github.com/WordPress/wordpress-develop で利用できます。

注意してください: 多くの人は、パッチの管理に git を使うほうが簡単だと考えていますが、GitHub に提出されたプルリクエストはマージされません。パッチは GitHub のプルリクエストで作成・レビューできますが、必ず Trac チケットと関連付けられている必要があります。この意味をよりよく理解するために、コードレビューのための GitHub プルリクエストのページを参照してください。

Top ↑

リポジトリの構造

WordPress の Git ミラーは、コードベースの完全な履歴を含んでいます。Subversion の各コミットは、Git のチェンジセットで示されています。プロジェクトの履歴を見るには、git log ユーティリティを使います。リポジトリのレイアウトは次のとおりです。

  • SVN の trunk に相当する trunk ブランチです。これは最先端のブランチで、次のメジャーリリースのアルファ版を含んでいます。特別な場合を除き、貢献者は trunk ブランチに対してパッチを準備すべきです。
  • 各メジャーリリースシリーズに対応するブランチが存在し、そのシリーズのバージョンの最初の2桁の数字を使って名前が付けられています。たとえば、4.5.1は 4.5 ブランチからリリースされています。
  • WP のすべてのリリース (1.5.0以降) は Git タグで表されています。一覧を見るには git tag を使ってください。

Top ↑

パッチ

WordPress の改善やバグフィックスの提案は、パッチ として提出する必要があります。パッチとは、コードの変更点を記述した特別なテキストファイルのことで、追加、削除、変更されたファイルや行を特定できます。これは、(差分ファイルを生成する UNIX コマンドにちなんで) diff とも呼ばれます。パッチは .patch または .diff という拡張子を持っています。パッチファイルは、プロジェクトの公式バグトラッカーである WordPress Trac に提出できます。

git クライアントを使って、以下のようにパッチファイルを作成できます。

  1. リポジトリをローカルマシンにクローンします: $ git clone git://develop.git.wordpress.org/ /path/to/wordpress-develop
  2. 作業用ブランチを作成します (trunk は常に公式コードの最新バージョンであるべきですので、変更しないほうが良いでしょう)。ローカルでのチェックアウトを整理するために、ブランチ名の一部として Trac チケット番号を使用することを推奨します。例: $ git checkout -b 30000-add-more-alots
  3. コードベースに変更を加えます。変更をステージ (git add) して、コミット (git commit) してください。公式の git ドキュメントには、これに関するチュートリアルがあります。
  4. ローカルブランチと trunk ブランチの差分を確認するには、git diff を使用します: $ git diff trunk 30000-add-more-alots (脚注)
  5. Trac にパッチを提出する準備ができたら、git diff を使用してパッチファイルを生成しますが、.diff ファイルとして保存するように指定します。一般的に、ファイル名はあなたが作業しているチケット番号で、拡張子は .diff にしてください (すでにパッチがあるチケットでは .2.diff.3.diff などになります)。コマンドの例: $ git diff trunk 30000-add-more-alots > 30000.diff
  6. パッチを適切な Trac チケットにアップロードしてください。

Top ↑

ユニットテスト

Trac に投稿する前に PHPUnit テストスイートを実行すること (そしてパッチのユニットテストを書くこと) を強く推奨します。それにより、コミッターがあなたの変更をレビューし、コミットすることが何倍も簡単になります。

git からリポジトリをダウンロードすると、importer プラグインに関連するいくつかの PHPUnit テストが失敗します。これを修正する方法は次のとおりです。これは tests/phpunit/data/plugins/wordpress-importer ディレクトリが git リポジトリに含まれていないことが原因です。

cd /path/to/wordpress-develop
cd tests/phpunit/data/plugins/
svn co \
    https://plugins.svn.wordpress.org/wordpress-importer/trunk/ \
    wordpress-importer

Top ↑

Git を使用するときの注意点

脚注: 前回パッチを作成したときから trunk ブランチが変更された場合 (たとえば最新のコードを取り込んだ場合)、最新のコードに対してブランチの rebase を行う必要があります。これは、パッチを最新の状態に保つためのすばらしい方法であり、svn よりも Git の方がずっと簡単です。以下は、trunk ブランチを更新してパッチを最新のコードに更新するためのコマンドの例です (最初にあなたのリポジトリにコミットされていない変更がないことを確認しましょう)。

git fetch origin
git checkout origin/trunk -B trunk
git checkout 30000-add-more-alots
git rebase trunk
git diff trunk 30000-add-more-alots > 30000.x.diff

原文 / 日本語訳

最終更新日: