Git:フィーチャーブランチの粒度をどうすべきか?

今日twitterで@Nkzn君とこんな会話をしました。

 

 

そこで、フィーチャーブランチの粒度って、どの程度にしておくべきなんだろうとちょっと考えてみました。

 

そもそもフィーチャーブランチとは

ある特定の機能(フィーチャー)を追加するために作るブランチのことです。

 

では「フィーチャー」とは

「機能」ということから、私の中ではUIで行う1つのアクションや、APIの一つのインターフェース()がフィーチャーかなと思っています。

twitterなら、「TL取得」とか「Mention取得」が一つのフィーチャーって感じです。

 

どのようにフィーチャーブランチを切るか

私はまず上記のフィーチャーの単位でブランチを作成します。

そのうえで、フィーチャーをいくつかのタスクに分けて、タスクごとにトピックブランチを作成します。

タスクを終えたらトピックブランチをフィーチャーブランチにマージ、すべてのタスクを終えたらフィーチャーブランチをメインラインにマージ、という手順で作業しています。

 

git-flowを用いて、search-fuga-dataというフィーチャーブランチで作業を行ったとすると、コミットグラフはこんな感じになります。

image

 

フィーチャー+タスクで切る方法

上記の方法だとgit-flowの範囲外の操作も必要です。すべてgit-flowの範囲内に収めたいなら、フィーチャーブランチはフィーチャー+タスクの単位でブランチを作成するという方法もあるかと思います。

 

同じくgit-flowを用いて、search-fuga-data/button-click、search-fuga-data/validationという二つのフィーチャーブランチで作業してマージしたコミットグラフはこんな感じです。

image

 

どちらを選ぶか?

前者は追加したいフィーチャーについてメインラインへのマージが1箇所のみとなります。これは「フィーチャーブランチ」という考えからは望ましい形ではないかなと思います。

後者は追加したいフィーチャーのメインラインへのマージが複数箇所になってしまいます。ただ、マージされたフィーチャーブランチの名前から、度のフィーチャーであるかの判別はつきます。

 

私としては前者の「フィーチャーでブランチを切り、さらにタスクごとにトピックブランチ」を推したいと思います。理由としてはメインラインへのマージが1箇所であるため、他の作業者による成果物が途中に挟まることがないためです。

 

とはいえ

これがベストというわけでもないと思ってはいます。何かよいフィーチャーブランチの切り方があれば、ぜひ教えてください。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中