GitHubでissueを作成したのち,ローカルでissueタイトルを含めてブランチを作成するときにissueタイトルをコピペするのが面倒だったので,スクリプトを作成しました。
スクリプト
mkbranch
#!/bin/sh
USER_AND_REPO=`git remote -v | tr ' ' '\n' | tr ':' '\n' | sed -n 2P | sed 's/.git//'`
ISSUE_NUM=$1
# If the repository is secret, get 'Full control of private repositories' token from https://github.com/settings/tokens
GIT_HUB_API_TOKEN=''
GIT_HUB_ISSUE_URL=https://api.github.com/repos/${USER_AND_REPO}/issues/${ISSUE_NUM}
ISSUE_TITLE=`curl -su :${GIT_HUB_API_TOKEN} ${GIT_HUB_ISSUE_URL} | grep title | tr ':' '\n' | sed -n 2P | sed -e 's/ \|"\|,//g'`
if [ -z ${ISSUE_TITLE} ]; then
echo "Can't get issue title."
exit 1
fi
BRANCH_NAME=#${ISSUE_NUM}-${ISSUE_TITLE}
git checkout master
git pull origin master
git checkout -b ${BRANCH_NAME}
git push origin ${BRANCH_NAME}
Gist
GitHubのAPIを利用してissueのタイトルを取得しています。
issue番号とタイトルを元にブランチ名を決定し
- masterにcheckout
- リモートmasterをpull
- ブランチの作成&checkout
- ブランチのpush
を行います。
BRANCH_NAMEの部分をいじることでブランチ名のフォーマットを変更できます。
使い方
# プロジェクトディレクトリ下で
curl -sO https://gist.githubusercontent.com/akriaueno/1f71077005d3f3d253c18cc519a4367a/raw/debf08ffcf9eae944ca5a50de3ba790da19f44b4/mkbranch && chmod +x mkbranch
./mkbranch <issue番号>
git
コマンドを使用しているので,プロジェクトディレクトリ下で実行してください。
シークレットレポジトリの場合は https://github.com/settings/tokens からFull control of private repositories
なトークンを取得してGIT_HUB_API_TOKENに入れてください。
トークンを入力したスクリプトをGitHubで公開してしまわないようご注意ください!
シェルスクリプト初心者なので変なところがあったらご指摘ください。