LoginSignup
2
0

More than 3 years have passed since last update.

pecoを使ってgithubのcompare URLを簡単に生成する

Posted at

説明

私はprレビューにて指摘された箇所を修正した後、その差分をレビュアーに見てもらうためURLを貼るようにしています。
こんな感じ↓
スクリーンショット 2021-04-04 13.13.50.png
しかし修正の規模が大きかったり、修正を失敗してしまって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でやってみる。
スクリーンショット 2021-04-04 14.05.30.png
こんな感じで現在のbranchのコミットログがワンラインで出力されます。
差分を見たい部分の始まりのコミットと、終わりのコミットを選択するとgithubのcompareURLが出力されます。

その差分に間違いがないか確認してみましょう。

まとめ

最近知ったpecoがかなり便利だなと思い、試しにコマンドを作成してみました。
pecoはbranchのチェックアウトや削除など細かい操作にも非常に便利ですね。

今回は生成されたURLをechoで出力していますが、私はそのままブラウザで開いたり、
それと同時にMarkdown形式でクリップボードに保存させ、githubにペーストしやすいようにしています。

    ~~
    省略
    ~~

    echo "[差分]($URL)" | pbcopy
    open $URL
2
0
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
2
0