実装前に、[WIP]でプルリクはあげておきたい🤗
実装目的や方法を記述しておきたいし、開発メンバーに進捗状況を可視化したいため。
でもいくつかコマンド叩くのも、Github上で緑のボタンポチるのも面倒くさい😭
そこで、一瞬でどのブランチにいても最新のmasterからブランチを切ってくれて、
[WIP]でプルリクを出してくれる prコマンド
を紹介します。
要は
PullRequestを出すprコマンドなんてものは存在しないので、
$ vi ~/.bashrc
などに関数として下記を定義して、
$ source ~/.bashrc
を叩いてください。
alias openpr='hub browse -- pull/$(git symbolic-ref --short HEAD)'
function pr() {
if [ $1 ]; then
git checkout master;
git pull origin master;
git checkout -b `date "+%Y%m%d"`_$1;
git commit --allow-empty -m "feat:create pull request";
git push origin `git rev-parse --abbrev-ref HEAD`;
hub pull-request -m "[WIP]$2";
openpr;
else
echo "第1引数でブランチ名、第2引数でPRタイトルがほしーの!"
fi
}
これで準備完了。
$ pr ブランチ名 プルリクタイトル
を叩くだけ!
$ pr fix_hogefuga hogefugaのバグ修正
はい!プルリク作れました。終了。
hubコマンドないよと言われたら、下記コマンドでインストールしてください。
最初は、Githubのユーザー名とパスワードを求められます。二段階認証設定してるならそれも。
$ brew install hub
解説・補足
① masterブランチに切り替える
$ git checkout master
② 最新のmasterリモートブランチを取得する
$ git pull origin master
③ 日付_引数をブランチ名としてブランチを作成して、切り替える
$ git checkout -b `date "+%Y%m%d"`_$1
今回はブランチ名をユニークにしたいので、先頭に本日の日付を付与しています。
④ コミット対象がない場合でもコミットする
$ git commit --allow-empty -m "feat:create pull request"
⑤ 現在のブランチでpushする
$ git push origin `git rev-parse --abbrev-ref HEAD`
⑥ PullRequestを出す
$ hub pull-request -m "[WIP]$1"
⑦ ブラウザで該当リポジトリのGithubを開く
$ openpr
alias openpr='hub browse -- pull/$(git symbolic-ref --short HEAD)'
わざわざこれだけエイリアスとして切り出して関数内で読んでいる。それはなぜか関数からhub browse -- pull/$(git symbolic-ref --short HEAD)
を呼ぶと、以下のように本来 pull
になるものが tree
になってしまい、プルリクではなくリポジトリのトップページに遷移してしまうためである。
https://github.com/OWNER/REPOSITORY/tree/BRANCH
(応用)テンプレート利用の場合
テンプレートを利用している場合は、 hub pull-request -m "[WIP]$2";
の部分だけ変更すれば大丈夫です。利用しているテンプレートのマークダウンをコピペしてください。改行は\nで。
alias openpr='hub browse -- pull/$(git symbolic-ref --short HEAD)'
function pr() {
if [ $1 ]; then
git checkout master;
git pull origin master;
git checkout -b `date "+%Y%m%d"`_$1;
git commit --allow-empty -m "feat:create pull request";
git push origin `git symbolic-ref --short HEAD`;
echo -e "[WIP]$2`\n\n# 目的・背景\n\n# テスト(こんな感じでコピペ。)" | hub pull-request -F -;
openpr;
else
echo "第1引数でブランチ名、第2引数でPRタイトルがほしーの!"
fi
}
テンプレートの作り方
対象リポジトリに .github
ディレクトリと、その配下に ISSUE_TEMPLATE.md
PULL_REQUEST_TEMPLATE.md
を作れば良いです。そうすると、issueやPullRequest作成する際に、こんな感じで、テンプレートを呼んでくれます。
備考
調べたら prコマンド
って、あるんですね。印刷用にファイルを整形するコマンドだそう。
特に問題ないと思いますが気になるようでしたら、よしなに変更してください。