HubFlowとは
HubFlowはGitHubリポジトリでGitFlowを便利に使うためのGitコマンド拡張です.
gitflowをforkして開発されています.datasift/gitflow · GitHub
今の時点では,大幅に便利になるというものではない感じです.
git hf
のようにサブコマンドhfを用いたコマンド体系なので,gitflowと併用できます.
さらに,gitflowを利用している既存のリポジトリに対してもgit hf init
で上書きすれば使えます.
使い方
なんか新しい図が出てますが,流れはGitFlowとほとんど変わりません.
リモートブランチとfork元のブランチに対する操作が用意されていないGitFlowに対して,HubFlowでは用意されているという点が異なります.
便利になったところ
git hf update
でmasterとdevelopの両方をupstreamに追従できます.
git push origin feature/xxxxを
git hf feature push
で代替できます.
feature/xxxxを指定しなくてもカレントブランチに対応するリモートブランチにpushしてくれます(pullについても同様).
Gitのpush時のデフォルトの挙動をsimpleモードにしたときとおそらく同じ挙動だと思います.(see おまけ)
simple
- likeupstream
, but refuses to push if the upstream branch's name is different from the local one. This is the safest option and is well-suited for beginners. It will become the default in Git 2.0. https://github.com/git/git/blob/master/Documentation/config.txt
プルリクエストがマージされたのちに
git hf feature finish
でカレントブランチとリモートブランチを削除してくれる.
欲しい機能
- git hf release start とかしたときに,Semantic Versioningにしたがって,自動でバージョン番号を管理してくれると良いですね.
おまけ - git hf feature push時の挙動
ソースコードをみて確認します.
- feature pushするとcmd_push関数が呼ばれます.
- parse_remote_name関数でfeature pushの第1引数がREMOTEに,第2引数がNAMEが代入されます.BRANCHには feature/$NAME が代入されます.引数がなければいずれの変数も空になります.
- feature pushに引数がなければ$REMOTEにoriginがセットされます.
- name_or_current関数でNAMEが空のときに,use_current_feature_branch_name関数を呼んでBRANCHにカレントブランチ名を,NAMEに'feature'を削ったカレントブランチ名を代入する.
- git push "$REMOTE" "$BRANCH:refs/heads/$BRANCH" でpushします.
以上より,feature pushの引数を指定しない場合は,カレントブランチ名が補完されることがわかりました.
普段はforkモデルではなく,ブランチモデルを使っているので,あまり恩恵が預かれない感じです.