説明
私はprレビューにて指摘された箇所を修正した後、その差分をレビュアーに見てもらうためURLを貼るようにしています。
こんな感じ↓
しかし修正の規模が大きかったり、修正を失敗してしまって1回のコミットで出来なかった場合
複数コミットを共有すると逆に見づらくなってしまうので、この方法使えません。
その場合はgithubのcompareURLを使うのですが、コミットハッシュをペーストなどして作成するため少々面倒なんですよね。
(良い方法を自分が知らないだけの可能性も...)
なので、かんたんに生成してくれるコマンドを作成しました。
複数commit間の差分を表示するURL構成
https://github.com/${ORGANIZATION}/${REPOSITORY}/compare/${COMMIT_HASH}..${COMMIT_HASH}
peco install
$ brew install peco
pecoについて知らない方は、わかりやすいので詳しくはこちらを参考にしてください。
え、まだpecoを使ってないの???
コマンド作成
私はzshを利用していますが、bashでも動作したことを確認したので
そのまま使えるかと思います。
function g-cmp() {
# repository情報を取得
REPO=`git remote -v | grep fetch | awk -F '[:. ]' '{print $3}'`
# pecoを使って始まりと終わりのcommitを指定する
START=`git log --pretty=oneline | peco`
END=`git log --pretty=oneline | peco`
# どちらかが選択されないとerror
if [[ -z $START || -z $END ]];then
echo "canceled comparison."
return
fi
# 選択したcommit情報を出力
echo " from : $START"
echo " to : $END"
# 選択したcommitからcompareURLを生成
START_COMMIT=`echo $START | awk '{print $1}'`
END_COMMIT=`echo $END | awk '{print $1}'`
URL="https://github.com/$REPO/compare/$START_COMMIT..$END_COMMIT"
# 生成したURLを出力
echo $URL
}
使ってみる
上記コマンドをgithubで管理されているRepositoryにて入力してください
$ g-cmp
試しに自分のzshカスタムしているrepositoryでやってみる。
こんな感じで現在のbranchのコミットログがワンラインで出力されます。
差分を見たい部分の始まりのコミットと、終わりのコミットを選択するとgithubのcompareURLが出力されます。
その差分に間違いがないか確認してみましょう。
まとめ
最近知ったpecoがかなり便利だなと思い、試しにコマンドを作成してみました。
pecoはbranchのチェックアウトや削除など細かい操作にも非常に便利ですね。
今回は生成されたURLをechoで出力していますが、私はそのままブラウザで開いたり、
それと同時にMarkdown形式でクリップボードに保存させ、githubにペーストしやすいようにしています。
~~
省略
~~
echo "[差分]($URL)" | pbcopy
open $URL