LoginSignup
2
2

More than 5 years have passed since last update.

Githubみたいにブランチの状態を一覧する.sh

Last updated at Posted at 2014-08-12

ブランチの進捗どうですか。

Gistからどうぞ https://gist.github.com/unarist/bd912e7c6024c9ade792

実行例

$ git-branch-stats.sh
 feature/a merged =origin
 feature/b +5-2 commits >origin/feature-b
 my_local_branch +1-0 commits =???
 master  =origin
  • masterとのマージ起点を割り出して、そこから双方で進んだコミットの数を表示
  • マージ済みならその旨を表示
  • upstreamのrefspecを表示(remote以外同じなら省略)
  • upstreamと比較して(=|<|>|<>)を表示

実装周り

upstream周りはgit for-each-ref任せ。

git rev-listは「コミットAから辿れる&&コミットBから辿れない&&...」なコミットを列挙するコマンドでちょっとおもしろい。あまり複雑なことはできないようだけど。

ahead/behindは行数版も実装したものの、個人的にコミット数の方が見たかったのでコメントアウト。

今後の課題

  • マージ済みのブランチにマージ日時とか表示したい
    • rev-listを使うなら、ブランチがマージコミットを指しているのか、マージ直前のコミットを指しているのかで処理が変わるような
  • マージ起点じゃなくてブランチを作った時点からのdiffがいい?(可能なのかわからないけど)
    • merge-baseに--fork-pointという操作があるけど、reflogを見るようなので多分ここでは使えない
  • マージする方向が適当でもうまく動くのだろうか
  • わかりにくい
    • upstreamが消えると<>と表示される(masterと比較している・・・?)
    • +2-1じゃなくて[ahead 2, behind -1]とか

参考

StackOverflowであたりをつけてmanを読み込むいつもの流れ。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2