パッチとプルリクエストはCakePHPにコードを寄贈する最善の方法です。 パッチは GitHub でチケットに添付できます。 プルリクエストはGitHubで作ることができ、コードに貢献するための一般的により良い方法です。
CakePHPのパッチの作業に入る前に、環境を整えることをお勧めします。 以下のソフトウェアが必要となるでしょう:
名前・ハンドルネームとEメールアドレスのユーザー情報を設定してください:
git config --global user.name 'Bob Barker'
git config --global user.email 'bob.barker@example.com'
GitHubからCakePHPのソースコードのクローンを取得してください:
forkがされた後に、ローカルマシーンにforkをクローンしてください:
git clone git@github.com:YOURNAME/cakephp.git
オリジナルのCakePHPレポジトリをリモートレポジトリとして追加してください。 後にCakePHPレポジトリから変更を取ってくる為に使います。 これは、CakePHPを常に最新の状態に保つことができるようになるでしょう:
cd cakephp
git remote add upstream git://github.com/cakephp/cakephp.git
CakePHPのセットアップを済ませたなら、 $test データベースコネクション の定義をし、 全体テスト を実行することができるようになっているはずです。
バグ、機能または機能の拡張に取り組むたびに、トピックブランチを作成してください。
作成したブランチは修正・向上をする為のバージョンを元にする必要があります。 例えば、 2.3 のバグを修正しているとすると、ブランチのベースとして 2.3 ブランチを使用するとよいでしょう。現在の安定版に対してバグ修正をする場合は master ブランチを使用しましょう。 これにより後にとても簡単に変更をマージすることができます:
# 2.3のバグの修正をする
git fetch upstream
git checkout -b ticket-1234 upstream/2.3
ちなみに
ブランチには説明的な名前を使用してください。 チケットまたは機能名への参照は良い習慣となります。 例えば、ticket-1234、feature-awesomeなどです。
上記はupstream(CakePHP)の2.3ブランチを基本としたローカルブランチを作成します。 修正作業をし、必要な数のコミットを作ってください。 ただし、以下のことを心がけてください:
一旦変更が完了し、CakePHPへマージする準備ができているなら、ブランチの更新をしたほうがいいでしょう:
git checkout 2.3
git fetch upstream
git merge upstream/2.3
git checkout <branch_name>
git rebase 2.3
これは作業の開始時からCakePHPに起こった全ての変更を取得+マージします。 その後、リベースするか、現在のコード上に変更を再生します。 rebase の最中に衝突(conflict)が起こるかもしれません。 リベースが早く終わった場合は、どのファイルが衝突したか・マージされてないかを git status で確認することができます。 各々の衝突を解決して、その後リベースを続けてください:
git add <filename> # 全ての衝突したファイルにこれを行なってください。
git rebase --continue
全てのテストが継続してパスしていることを確かめてください。 それから、フォークにブランチをプッシュしてください:
git push origin <branch-name>
一旦GitHubにブランチが配置されたら、 cakephp-core メーリングリストで議論、またはGitHubでプルリクエストを送ることができます。
プルリクエストを作成した後にベースブランチを変更することはできないので、 作成する前に正しいベースブランチを選択しているかを確認する必要があります。
ノート
CakePHPに寄贈される全てのコードはMITライセンスの元にライセンスされ、Cake Software Foundationが全ての寄贈されたコードの所有者になり、全ての寄贈されたコードは 貢献者ライセンス契約 (Contributors license agreement) の対象となることに注意してください。
保守ブランチへマージされたバグ修正は、コアチームによって定期的に今後のリリースにもマージされます。