ここでは、baserCMSコアの開発手順について説明します。
baserCMSプロジェクトに GitHub コラボレーターとして登録されていない場合は、 コントリビューターとして一旦、自分の GitHub プロジェクトにフォークしてから開発にとりかかります。
ブラウザで、baserCMSのGitHub を開き、ページ右上の「Fork」ボタンをクリックし、
baserCMS のレポジトリをフォークします。(自分のプロジェクトに baserCMS レポジトリのコピーを作成します)
ローカルにフォークしたレポジトリのクローンを作成します。
git clone git@github.com:{ユーザー名}/basercms.git {フォルダ名}
リモートのブランチをローカルのブランチとしてコピーします。
次のコマンドでリモートブランチをローカルブランチとしてコピーした上で、チェックアウトします。
git checkout -b {ローカルブランチ名} remotes/origin/{リモートのブランチ名}
#(例)開発ブランチ 5.1.x をローカルの開発ブランチ 5.1.x としてコピー&チェックアウト
git checkout -b 5.1.x remotes/origin/5.1.x
これで開発の準備が整いました。
baserCMSの開発は、Issue駆動開発 を前提としています。まずは、開発する内容について、Issueを立ててください。
既存のIssueに取り掛かる場合は、その旨、Issueにコメントを追加してください。
なお、公式開発メンバーの場合は、ラベル運用ガイドラインに従って、ラベルを付与してください。
開発を行う場合は、ローカルの開発ブランチからさらにトピックブランチを作成した上で取り掛かります。
baserCMSは、基本的にIssue駆動開発の為、トピックブランチの名称には、Issue番号を含める事をおすすめします。
また、トピックブランチからさらに作業用ブランチを作成し、そちらで開発し、開発が完了した時点でトピックブランチに squash
オプション付きでマージする流れにすると、開発中に安心して随時コミットができ、不要なコミットログを残さなくてすみます。
# (例)バグチケットNO 3333 用のブランチを作成し改修する場合**
git checkout -b dev-#3333
git checkout -b dev-#3333-work
# 修正作業…
git commit -a -m “◯◯を調整”
git commit -a -m “◯◯を調整中、一旦コミット”
git checkout dev-#3333
git merge —squash dev-#3333-work
git commit -a -m “◯◯の不具合を修正 fix #3333”
※ マージの際に、「—squash」オプションを利用すると、マージした内容をコミットせず、変更だけを取り込む事ができます。
これにより、作業用ブランチでコミットした際のメッセージをリモートブランチに含めず、マージしたタイミングでのメッセージだけをリモートブランチに送る事ができます。
※ マージしたタイミングでのメッセージに、「fix #チケットNO」という内容を含めると、GitHubのIssueと連携させる事ができますので必ず入れるようにしましょう。
具体的には、Issue詳細ページに、コミットへのリンクが張られます。
ローカルでの開発が完了したら、リモートのフォークレポジトリに変更内容を送信します。
``
git push {自身のレポジトリのリモート名} {トピックブランチ名}
# (例)フォークしたブランチ dev-#3333 を送信
git push origin dev-#3333
あなたが修正したプログラムコードをbaserCMSの本家レポジトリに反映させるには、baserCMSの本家レポジトリにプルリクエストを送る必要があります。
ブラウザで、フォークしたbaserCMSのレポジトリページを開きます。
https://github.com/{ユーザー名}/basercms
ページ右上の「Pull Request」ボタンをクリックします。
内容を確認し問題なければ、どのような変更を行ったのかをメッセージ欄に入力し、「Send」ボタンを押すと、プルリクエストが送信され、リードデベロッパーにメールが送信されます。
※ ここでプルリクエストの申請先ブランチが master に設定されている場合は、開発ブランチ(dev-x)に設定しなおしてください。
リードデベロッパーがコードレビューを行い問題がなければ、あなたの変更内容をbaserCMSの本家レポジトリに反映させます。
その際、コミットメッセージに fix を記載している場合、Issueにも自動連携しクローズします。
あなたが開発している間に、baserCMSの本家レポジトリには、他の方の変更が取り込まれていきます。それらの変更を取り込むためには、baserCMSの本家レポジトリを事前にリモートとして設定しておく必要があります。
※ こちらに直接プッシュできるのは、公式GitHubコラボレーターだけですので、プッシュは行えず、プルのみが可能となります。
git remote add {リモート名} git@github.com:basercms/basercms.git
# (例)リモート名 basercms として追加する
git remote add basercms git@github.com:basercms/basercms.git
git pull {リモート名} {開発ブランチ名}
#(例)リモート名 basercms から、5.1.x ブランチの内容を取り込む
git pull basercms 5.1.x
これで次の開発を行う準備が整いました。
あなたが、baserCMSコアの開発に更に貢献したい場合は、公式開発メンバーとして参加を希望することができます。
開発への参加方法 をご覧ください。