LoginSignup
13
12

More than 5 years have passed since last update.

WIP PullRequestフローの開発を楽にするスクリプト(コマンド)2つ

Posted at

はじめに

WIP PullRequestに便利な2つのスクリプトを作りました。WIP PRは進捗が常に見えるので開発体制としては理想的だと思いますが、手順が多くうっかりPullRequestを忘れてしまったりします。で、WIP PRはダメだという結論になってしまう。
プロジェクト管理や運用を浸透させるには、開発者がどれだけ楽に導入できるか?が肝だと思います。楽をしましょう。

前提

hubコマンドが使える状態であること
http://shoma2da.hatenablog.com/entry/2014/03/26/222802

コマンドの使い方

空のプルリクエストを作成する

$ git wip.pr <branch名>

以下のコマンドで、ブランチの作成+チェックアウト、remoteへのpush、PullRequestの作成までワンストップで実行されます。毎度やることは同じなのに手順だけが多い作業なので非常に便利です。branchの作成=PullRequestの作成になるので物忘れもなく効果的。

該当PullRequestのページを開く

$ git wip.link

現在のブランチに該当するGithub上のPullRequestページを開きます。Githubのトップページから探したり、連携しているSlackのログを辿るのは面倒です。PCが覚えられることはすべてPCに任せましょう。

設定方法

以下のスクリプトをgitレポジトリの適当な場所に置きます。開発者はこのスクリプトを実行するだけで上記2コマンドが使えるようになります。

/resources/scripts/setup.sh
#!/bin/sh

echo "setup PullRequest..."

mkdir .git/Github
#create PullRequest script
cat << "EOF" > .git/Github/create_pullrequest
#!/bin/sh

current=`git rev-parse --abbrev-ref HEAD`
git checkout -b $1
git commit --allow-empty -m "create PullRequest"
git push origin $1
git branch -u origin/$1 $1
url=`hub pull-request -m "$1" -b $current`
num=`echo $url | awk -F / '{print $NF}'`
git tag $num
EOF

chmod +x .git/Github/create_pullrequest

#show Link script
cat << "EOF" > .git/Github/link
#!/bin/sh

base=`git show-branch --merge-base master HEAD`
commit="HEAD"

while :
do
  echo ">"
  nextcommit="${commit}^"
  next=`git rev-parse $nextcommit`
  if [ $base = $next ]; then
    echo "Found!"
    pr=`git tag --contains $commit`
    hub browse -- pull/$pr
    break
  fi
  commit=$nextcommit
done
EOF

chmod +x .git/Github/link

#setup gitconfig
cat << "EOF" >> .git/config
[alias "wip"]
  pr = "!f(){ .git/Github/create_pullrequest $1;};f"
  link = "!f(){ .git/Github/link;};f"
EOF

仕組み

wip.prでPullRequestを作成するときに、PullRequestIDを最初のコミットのTagで割り当てています。tagならpushすれば全開発者で共有できるので便利です(今回はやっていませんが)。featureブランチにtagを付けることはほとんど無く、masterにしてもproduction-xxxという風にtagのフォーマットも決まっていると思うので、特に運用上弊害は出ないかと。

13
12
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
13
12