0
0

More than 3 years have passed since last update.

この行がマージされたプルリクを見たい

Posted at

最近よくコードリーディングをしているので、GitLensを重宝しています。
https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens

コミットIDやコミットメッセージを簡単に見られるので、
「なぜこの変更が行われたのか」を確認することができます。神。

ただ、この情報だけでは足りず
「このコミットがマージされたプルリクを見たい」となることがあります。
こうなると、

  1. GitHubで該当のCommitを開く
    https://github.com/[user|org]/[repo]/commit/[commit_id]
  2. プルリクへのリンクがあるのでクリック

と確認することになりますが、繰り返していくと面倒になってきます。
そこで、シェルを作りました。

git-open-pr
#!/bin/bash -eu

DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch" | sed "s/.*: //")

COMMIT_ID=$(grep -Fxf \
  <(git log --first-parent --merges --pretty=format:%H $DEFAULT_BRANCH; echo) \
  <(git log --ancestry-path --merges --pretty=format:%H $1..$DEFAULT_BRANCH; echo) \
| tail -n 1)

COMMIT_MSG=$(git log $COMMIT_ID -n1 --pretty=format:%s)
PR_NO=$(echo $COMMIT_MSG | egrep --only-matching '#\d+')

GIT_URL=$(git remote get-url origin)
REPO_PATH=${GIT_URL#git@github.com:}
REPO_SIGN=${REPO_PATH%.git}

open "https://github.com/$REPO_SIGN/pull/${PR_NO#\#}"

使い方

  1. 上記のシェルを git-open-pr とか名付けて
  2. chmod 744 git-open-pr(実行権限を付与)
  3. PATHが通っている場所においてください
    (私は自作シェル置き場($HOME/binなど)を作って、
    .bash_profile.zshrcexport PATH=PATH:$HOME/binと書いてあります)
  4. 該当のレポジトリでCommit IDを指定して実行
  $ git-open-pr xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

GitHubのプルリクページが一発で開きます

前提

  • 多分Macでしか動作しません
  • GitHubで「Create a Merge Commit」でマージされたプルリクでないと開けません
  • マージコミットのsubjectが Merge pull request #100 from branch_name の形式になっていることを利用しています

動作確認環境

% sw_vers -productVersion
10.15.6   # Catalina

% xcode-select --version
xcode-select version 2373.

% git --version
git version 2.28.0

きもち

vscode拡張とか作ってvscode上で完結したいな...

参考

https://ja.stackoverflow.com/questions/12852/特定のコミットに対して-それが対象のブランチへ-どのマージコミットでマージされたかを判定するには
https://git-scm.com/docs/pretty-formats

0
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
0
0