何かコードを書いて、ブランチをGitHubにpushしたあと、そのブランチのプルリクエストをさくっと作りたかったので、1コマンドで現在のブランチからのPull Request作成ページを開くコマンドを作りました。(共有レポジトリを想定)
以下のコードを実行可能権限をつけてパスの通った場所に git-ghpr という名前で置き、
git ghpr
とするだけでOK(なおブラウザを開くopenコマンドはMacの前提です)。ghprは GitHub Pull Request の略のつもりです。
perl で何やらやっているのは、親の最も近いブランチ名からPull Request先のブランチを推定する処理です。常に master 等に出すと決まっている場合は、ORIGIN="master" 等として固定値を入れておくと良いでしょう。
#!/bin/bash set -e ORIGIN_URL="$(git config --get remote.origin.url)" case "$ORIGIN_URL" in "git@github.com:"*) GHPATH="${ORIGIN_URL#*:}" GHSRC="https://github.com/${GHPATH%.git}" ;; "ssh://git@github.com/"*) GHPATH="${ORIGIN_URL#*@}" GHPATH="${GHPATH#*/}" GHSRC="https://github.com/${GHPATH%.git}" ;; "https://github.com/"*) GHSRC="$ORIGIN_URL" ;; *) echo "origin url is not github" exit 1 esac # Pull Request先を推定 ORIGIN="$(git describe --exclude \*/HEAD --all @~ | perl -pe 's/(?:heads|remotes|origin)\/|-\d+-g[\da-f]+$//g')" GHURL="$GHSRC/compare/$ORIGIN...$(git rev-parse --abbrev-ref @)" echo "$GHURL" open "$GHURL"