-
Notifications
You must be signed in to change notification settings - Fork 0
開発規約
理工展サーバの開発規約をここに定めます。
基本はgit-flowと GitHub Flowを組み合わせたものになります。
master
ブランチはすべての元となるブランチです。
master
ブランチは常にデプロイ可能です。
すなわち、開発環境を構築したいときはmaster
ブランチをプルし、
いくつかの変数を設定ファイルに書き込み、Vagrantでリモートマシンを立ち上げて
Chefを実行すればすべて完了するという状況が常に保たれています。
または、本番環境からプルをして、(必要なら変数をセットして)
Chefを動かせばほとんどサーバをダウンさせずにサーバの機能が更新されるという状況が常に保たれています。
テストされてないコード、不具合を起こすコードがmaster
ブランチに紛れ込んではいけません。
master
ブランチは一方的にdevelop
ブランチをマージして取り込みます。
master
ブランチがdevelop
ブランチをマージしたとき、タグが振られます。
タグは1.2.3
のように3個の自然数からなり(自然数は0から始まります!)、
最初の数字がメジャーバージョン、2番目がマイナーバージョン、
最後の数字がバグフィックスのバージョンを表します。
タグを振るときにどのような機能が追加されたのか、どんなバグをなおしたのかを
軽いコメントにして残しておくというのは良い習慣です。
develop
ブランチは開発の交差点の役割を果たすブランチです。
develop
ブランチは各トピックブランチをマージします。
マージした後、develop
ブランチでは統合テストが行われます。
テストは複数人で、できるだけ素早く行いましょう
(客観的なテストを行うためと、複数の統合テストが衝突するのを防ぐためです)。
統合テストが終了した後、develop
ブランチは速やかにmaster
ブランチにマージされます。
また、サーバにバグが見つかった場合、それが簡単に直るものであれば
(目安としては1回のコミットで修正できるかどうかを判断基準にすればいいでしょう)、
develop
ブランチでhotfixを行います。
そしてmaster
ブランチにマージされた後、デプロイされます。
開発が進むにつれてトピックが増えていったら、
それらをまとめるために
develop
ブランチとトピックブランチの間に
メイントピックブランチというまとめるブランチを挟むかもしれません。導入することにしました。
諸事情により、ブランチではなくIssueとして残すようにしました。
この概念をトピックブランチの命名規則に組み込みます。
つまり、トピックブランチを分類するためのカテゴリとして導入します。
以降このカテゴリのことをトピックカテゴリと呼びます。
今のところメイントピックブランチには次のようなものを考えています。
トピックカテゴリには今のところ次のものがあります。
カテゴリ名 | 内容 |
---|---|
core | gitなどのコアの設定 |
web | ApacheやPHPなどの設定 |
wiki | Wikiの設定 |
メールやメーリングリストの設定 |
メイントピックブランチが導入されたとき、トピックブランチの名前は
mail/023-install-dovecot
のようになるでしょう。
トピックブランチは一つの機能を実装するための、 あるいは少々やっかいなバグを修正するためのブランチです。
トピックブランチは切られる前にIssueが発行されます。 Issueを発行する際にはそのトピックのトピックカテゴリを上の表から選びましょう。 Issueが発行される時に大まかな仕様が決まっているか、 Issue上で議論をしながら仕様が定まっていくのが良いでしょう。
Issueが発行されたら、トピックブランチはdevelop
ブランチから切られます。
ブランチの名前は<トピックカテゴリ>/<Issue番号>-<機能やバグを簡潔に表す言葉>
というようにします。
ただし、Issue番号は3桁の数字でつけることにします。
たとえばmail/023-install-dovecot
のようにです。
すべて英小文字か数字で単語間はハイフンでつなぐことにします。
ブランチが切れたら思う存分開発を行ってください。 開発方法やコミットの仕方については後述します。
トピックブランチで開発を行っていたが、何らかの理由で開発が継続できないために 別の人に開発を引き継ぐときに作成するブランチです。 Qiitaのこの記事を参照してください。
開発途中の部分をそのままトピックブランチにコミット&プッシュするのではなく、
23/install-dovecot/seki-151119
のようにトピックブランチの名前の後ろに
元の開発者の名前と引き継ぎ日を付け足した名前のブランチを新規に作成し、
そのブランチをプッシュしてください。
引き継いだ開発者は引き継ぎブランチをプルし、
ある程度整えてから元のトピックブランチにマージしてください。
不必要なロールバック(や打ち消しコミット)が減るはずです。