Umi Blog
ウミブログ

今回は Drupal プロジェクトへの貢献に欠かせない「 Git × Drupal 」に関するドキュメントを翻訳してご紹介したいと思います。 こちらは完全に開発者の方向け(中でも特に Drupal にコントリビュートしたい方向け)のドキュメントです。
元記事はこちら。
いまこの記事をお読みになっている方の中には Git についてあまりよくご存知でない方もいらっしゃるでしょうか? Git についてなじみのない方のために「 Git 」についてまずはざっくりご説明してみたいと思います。
Git とは「 VCS: Version Control System 」と呼ばれるもののひとつで「プログラムコードを管理するためのツール」です。 10 年ほど前に登場した後急速に利用者数が拡大し、多くのオープンソース・プロジェクトの開発現場を支えています。 もともとは Linux の生みの親であるリーナスさんが「既存のコード管理ツールは全然ダメだから新しく作るわ」ということで開発されたものだそうです。
Drupal プロジェクトは多くのオープンソース・ソフトウェアの例にもれず、 Git を使ってコード管理が行われています。 Drupal のコアだけでなく、コントリビュートモジュール、コントリビュートテーマなども含めてすべて Git を利用する形が標準となっています。 細かくいうと、 Drupal のプロジェクトは「コードの管理はすべて Git 」、「イシューの管理はすべて Drupal.org 」という形でまとめられており、イシューの作成・確認、パッチの作成、テストなどの一連のタスクがすべて Drupal.org と Git を使う形で管理されています。
オープンソース・ソフトウェアのプロジェクトでは「コミュニティや仕組みが大事」ということがよく言われますが、 Drupal ではこのあたりのポイントがとてもしっかり押さえられているところがプロジェクトとしての大きな特徴だと思います。
余談ですが、私個人の個人的な好みとして、プログラミングの「言語」というレイヤーでは( Drupal のベースとなっている) PHP よりも使いやすくていいなと思う言語はいくつかありますが、以下の理由から Drupal (とそのベースである PHP )には開発者として大きな魅力があると感じています。
それはさておきまして。
今回は「 Drupal プロジェクトのためのパッチを Git を使って作ろう 」という趣旨のドキュメントを日本語に翻訳してみました。
以前小さな Drupal Sprint を行った際に、日本の開発者が Drupal プロジェクトに貢献したいと思っても、日本語での情報が不足していておいそれとは貢献できないということを痛感しました。 このあたりのドキュメントを整備していくことで私たちと思いを同じくする人たちの活動のサポートができればと思います。
実際の翻訳文に入る前に 2 点お断りがあります。これらのポイントを認識の上でご覧いただけますと幸いです。
では以下が翻訳文となります。
このページには、 Drupal.org に置かれているプロジェクトに対する貢献についての現時点でのおすすめのベスト・プラクティスが書かれています。 これはハイレベルな概説であり、 Git を使用したパッチファイル形式によるコントリビュートのお話となります。 ここでいうプロジェクトには例えばモジュールやテーマ、 Drupal コアなどが含まれています。 よりハイレベルな Git のワークフローに関しては Advanced patch contributor guide をご覧ください。 Drush issue queue commands を使うと、パッチの作成と利用がよりすばやくかんたんにできるようになります。
メモ 1: もし Drupal へのパッチ適用に馴染みがない場合はパッチについての Getting Involved セクションを読んでください。
メモ 2: git 以外のツールを使ってパッチを作成することにした場合は -p1 パッチを作成するように気をつけてください。古い -p0 フォーマットは 2011 年に廃止されました。
Git を使ったパッチの適用と作成に関する短い動画があります。 動画ではこのドキュメントの大部分がカバーされています。
レビュアーが変更範囲を理解しやすくするために、各変更のタイプを個別のパッチに分割しましょう。 例えば、バグフィックス、パフォーマンス改善、コードスタイル修正、空白修正などは別のパッチに含めるべきです。 分割された変更のタイプ(とパッチ)は Drupal.org のイシューキュー上で異なるイシューにひもづけるようにしましょう。
Windows ユーザのためのメモ: 行末とディレクトリのセパレータには Unix スタイル( LF と / )を使いましょう。テキストエディタの多くは行末を変換することができますし、 doc2unix を使って diff 出力をパイプしてもよいでしょう。
この節はパッチをはじめてコントリビュートする人のためのステップ・バイ・ステップのガイドです。
git clone --branch 7.x-1.x http://git.drupal.org/project/colorbox.git
cd colorbox
git branch [issue-number]-[issue-description]
例: git branch 1234-fix-for-header
この操作がうまく行ったか確かめるには次のコマンドを使いましょう:
git branch
* 7.x-1.x
1234-fix-for-header
git checkout 1234-fix-for-header
git branch
7.x-1.x
* 1234-fix-for-header
git status
git diff
git add new_file.php
git commit -a
git diff 7.x-1.x > [project_name]-[short-description]-[issue-number]-[comment-number].patch
git commit -a
git branch
7.x-1.x-dev
* 1234-fix-for-header
git checkout 7.x-1.x-dev
git branch
* 7.x-1.x-dev
1234-fix-for-header
パッチを適用したいブランチがチェックアウトできていることを確認します。 次のコマンドを使いましょう。
git branch
次のコマンドで最新のものにしてください:
git pull origin [branchname]
変更を加えましょう。 そしてもしイシューが Drupal.org の http://drupal.org/node/707484 にあるのならイシュー番号 707484 を使います:
git diff > [project_name]-[short-description]-[issue-number]-[comment-number].patch
[project_name] はプロジェクト名を指し示します。 これはプロジェクト URL http://drupal.org/project/[project_name] に現れるもの、または git リモートリポジトリの場所 http://git.drupal.org/project/[project_name].git です。
もしパッチによって新しいファイルを追加する場合は次のようにします:
git add [path.to.new.file]
git diff --staged > [project_name]-[short-description]-[issue-number]-[comment-number].patch
両方を同時に行うには次のようにします:
git add [path.to.new.file]
git diff HEAD > [project_name]-[short-description]-[issue-number]-[comment-number].patch
master ではないカレントブランチ上のコミットに対するパッチを作成する場合は次のようにします:
git format-patch master --stdout > [project_name]-[short-description]-[issue-number]-[comment-number].patch
新しいパッチの作成をサポートするインストラクションは次のとおりです。
git diff > [project_name]-[short-description]-[issue-number]-[comment].patch
例:
git diff > abc-make-table-4568951-5.patch
この例を見てください。
ワーキングツリーのルートにパッチをダウンロードしましょう。 次のコマンドでパッチを適用します。 -v フラグを使えば出力が詳しくなり、パッチがちゃんと適用されたかどうかを確かめることができます。
git apply -v [patch-name.patch]
事故的に未来のコミットのパッチファイルを含めてしまうのを防ぐためにはそのファイルを削除しておきましょう:
rm [patch-name.patch]
特定のファイルの変更をリバートする(元に戻す):
git checkout [filename]
すべてのワーキングツリーの変更をリバートする(元に戻す): Revert changes to the whole working tree:
git reset --hard
ワーキングツリーの外で追加されたファイルを削除する:
メモ: 注意して使ってください!ドライランのためには -n を追加します。
git clean -fd
翻訳文は以上です。 いかがだったでしょうか?
一部少しわからない部分があり、そのあたりの翻訳に迷いがある感じになってしまいました。 改善点などお気づきの点がございましたら contact などでお知らせいただけますと幸いです。
ふだん Git を日常的に使っていて Git にも Drupal にも慣れ親しんでいる開発者の方であれば、押さえるべきポイントは以下の 2 点のみかと思います。
[project_name]-[short-description]-[issue-number]-[comment-number].patch で。日々の Drupal 開発や活用に役立つコンテンツとあわせて、引き続き今回のようなコントリビュート活動に役立つコンテンツもお出ししていきたいと思います。 「こういう Drupal 記事を書いてほしい!」というようなご要望などございましたらご意見お寄せください(必ずお応えできるともかぎりませんが検討させていただきます!)。
小さなご意見も、私たちにとっては大きなヒントです!
ぜひ率直なご感想をお寄せください
この

Masters of Drupal Engineering.
人に、