ご無沙汰しています。
ドラゴンです![]()
最近はやっと暖かくなってきて、春を感じますね![]()
出掛けるのが楽しくなる季節です![]()
![]()
早く花見がしたい![]()
![]()
![]()
![]()
![]()
![]()
さて、以前のブログでコードレビューツールの話がありましたが、
今回は実際にどのようなワークフローを踏んでいるのかを書きたいと思います。
■環境
【チームメンバー数】プログラマが5人以下の少人数
【バージョン管理】Subversion(最近はGitが主流ですが、まだまだ使うプロジェクトは多いです)
【コードレビューツール】Phabricator
■要件
コミット前にコードレビューをする
レビュー待ちが長くならないようにする
安○先生、Gitが使いたいです(ワガママGitスキーなので…)
以下、実際の手順となります。
■準備
▼
を満たすために、レビュー関連の通知をチャットに送るようにする
Phabricatorの機能としてメールを送信する機能はあるのですが、
速度感を大事にするためにチャットに送信する機能等を追加したツールを作りました。
Phabricatorのコマンドをラップして使っています。
▼
を満たすために、ローカル環境でSVNとGitを共存させる
プロジェクトとしてSVNを使いつつも、Gitの機能を使いたいので、
他のメンバーに影響が出ないようにローカルで構築します。
1.SVNでチェックアウト
svn checkout svn://foo/bar/project
2.チェックアウトしたディレクトリでGitを初期化
git init
3.gitignore を作成し、.svn を無視リストに追加する
4.SVNで .git、.gitignore を管理対象から外す
これらの手順で以下のような構成になるかと思います。
project
+ .svn
+ .git
+ .gitignore
これでGitコミットは細かく、ブランチやスタッシュも使えて、
最終的にはSVNでコミットするという素敵な流れを作れます。
(git-svnも試してみましたが、Phabricatorと相性が悪かったので使っていません)
■開発
▼基本的なコミットまでの流れ
1.Gitでmasterブランチから派生した開発ブランチをチェックアウト
git checkout -b develop
2.開発ブランチでコーディング&Gitコミット
3.レビューツールで差分をアップロード&チャットに通知
4.レビューしてもらい、何かリクエストがあれば対応
5.レビューをAcceptしてもらったら、ツールを使用してSVNでコミット&チャットに通知
6.開発ブランチでの変更をmasterブランチにマージ
git checkout master
git merge –no-ff develop
▼開発ブランチでコーディング中にSVNの更新が入ったら?
1.masterブランチをチェックアウト
git checkout master
2.SVNで更新
svn up
3.開発ブランチをチェックアウト
git checkout develop
4.masterブランチからマージ
git merge –no-ff master
▼レビュー待ちの間に別機能を作りたい時は?
1.masterブランチから別の開発ブランチをチェックアウト
git checkout master
git checkout -b develop2
2.その開発ブランチでコーディング&Gitコミット
3.レビューが完了したら、レビューを出した開発ブランチをチェックアウトしてコミット
git checkout develop
(ツールでコミット)
4.変更をmasterブランチにマージ
git checkout master
git merge –no-ff develop
4.作業中だった開発ブランチをチェックアウト&変更をマージ
git checkout develop2
git merge –no-ff master
▼レビュー待ちの間に、そのレビューが完了した後に追加していきたい機能を作る時は?
1.レビュー中の開発ブランチから別の開発ブランチをチェックアウト
git checkout -b develop3
2.その開発ブランチでコーディング&Gitコミット
3.レビュー中のものに何か修正があれば、ブランチを切り替えて修正後にマージ
git checkout develop
(修正、Gitコミット、ツールでレビューを更新)
git checkout develop3
git merge –no-ff develop
4.レビューが完了したら、ブランチを切り替えてツールでコミット
git checkout develop
(ツールでコミット)
5.派生した開発ブランチから変更点をマージして、ブランチを削除
git merge –no-ff develop3
git branch -d develop3
あくまで一例ですが、こんな感じで開発しています![]()
良いゲームを作るためには、良い開発環境が必要です。
効率を上げて時間を短縮できれば、それだけ細部に拘った調整ができます。
また、コードを共有する事でプロジェクト全体としての安定化もでき、
他のメンバーからコメントを貰うことで各個人のスキルアップにも繋がります。
ちなみにチャットへの通知メッセージは各個人でカスタマイズできるようにしています。
メッセージを工夫して、各メンバーでどれだけオリジナル性が出せるかを競っています
笑
仕事はキッチリしますが、そういった遊び心も忘れてはいません![]()
興味がある方はヘキサドライブで一緒に仕事をしましょう![]()
学生さんは3次募集の応募締切が近いので、忘れないようにエントリーして下さい。
もちろん中途採用も募集していますので、採用情報からお願いします。
ではまた![]()
