$ git pr
で現在のブランチをリモートに push した状態で、簡単に pull-request が送ることができるようにすることを考えてみます。
まず hub の pull-request を使うことを前提とします。
通常 hub で pull-request を送るときは、以下のような形式になります。
$ hub pull-request -h owner:branch -b owner:branch
GitHub の運用ポリシーは色々あるとおもいますが、ひとつのプロジェクトで作業をしている時は、hub pull-request -h <不変>:<可変> -b <不変>:<不変>
という形式になると思います。(不変と書いてますが、分散バージョン管理で運用されている方はあてはまらないかもしれません。ごめんなさい。)
$ git config pr.head-owner banyan
$ git config pr.base-owner banyan
$ git config pr.base-branch master
そのプロジェクトのルートディレクトリで必要な値を設定します。
以下のように設定されていれば OK です。
$ cat .git/config
...
[pr]
head-owner = banyan
base-owner = banyan
base-branch = master # ここはプロジェクトによっては develop になったりする
そして ~/.gitconfig
に
pr = !hub pull-request -h `git config pr.head-owner`:`git rev-parse --abbrev-ref HEAD` -b `git config pr.base-owner`:`git config pr.base-branch`
と記述します。(もしくは git config --global
で)
$ git co -b foo
$ EDIT EDIT...
$ git ci -m 'foo'
$ git push -u origin foo
$ git pr
これでカレントブランチをベースにした特定のプロジェクトの GitHub への pull-request が簡単にできるようになりました。
- 余談ですが、hub は -i オプションをつければ issue を pull-request にすることができますが、pull-request は reopen することができないため、使い勝手が悪いので最近はほとんどつけていません。