GitHub の Pull Request を絞り込みで選択して手元に持ってくる
コードレビューが非常に多いので重宝していた。
んだけど、ちょっと前に今まで使っていたどこかで拾ったツールが動かなくなった。
多分 github の api の下位互換がなくなったかなんかだろう。
github api v4 は graph-ql になっていて、触ってみたくなったので自分で作り直すことにした。
(前のツールは僕の経験のない言語で出来ていたので書き足しをする気はなかった。)
準備等
jq
とpercol
(とか)が必要。
あと github で personal access tokens を取っておく。
pull request 一覧を取得
まずこれをどこかに置いておく。
git 管理されているディレクトリでこのスクリプトを実行すると、そのリポジトリの open な pull request が一覧で取得できる。
#!/bin/bash
token_path=`dirname "${0}"`/token
token=`cat $token_path`
repo_owner=`git config --get remote.origin.url | tr -s '/' '\n' | tail -r | sed -n 2,2p`
repo_name=` git config --get remote.origin.url | tr -s '/' '\n' | tail -r | sed -n 1,1p | tr -s '.' '\n' | head -n 1`
fetched=`curl -sS -H "Authorization: bearer $token" -d @- https://api.github.com/graphql <<EOF
{
"query": "query {
repository(owner:\"$repo_owner\", name:\"$repo_name\") {
pullRequests(last:20, states:OPEN) {
edges {
node {
title
number
headRefName
author {
login
}
}
}
}
}
}"
}
EOF`
echo $fetched | jq --raw-output '.data.repository.pullRequests.edges[].node | [.number, .title, .author.login, .headRefName] | @tsv' | tr '\t' '®' | column -t -s '®' | sort -r
("
と,
が pull request の title に含まれていてもちゃんと縦揃えするってのが大変だった...)
次に同じディレクトリにtoken
というファイルで personal access tokens を書いて置いておく。
こんな感じで書けば良い。
echo '665axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxa0' > token
選択とチェックアウト
reviewing
というブランチ名でチェックアウトをする。
僕はgprp
というコマンドとしてzsh
から呼び出して使っている。
#!/bin/zsh
git fetch --prune > /dev/null 2>&1
git branch -D reviewing > /dev/null 2>&1
script_path=`dirname "${0}"`/github-pull-requests/github_pull_requests.sh
number=`sh $script_path | percol --match-method regex | tr -s ' ' '\n' | head -n 1`
git fetch origin pull/$number/head:reviewing
git checkout reviewing
融通
という名の手抜き。
-
branch
やauthor
は絞り込み検索のためのみに取ってきている- 実際には
number
があれば実現できる - 好きな箇所を
query
で指定すれば良い
- 実際には
-
gprp
にパスを通せば使えるだろう - 名前も好きにすれば良い
- チェックアウト先のブランチ名とかも好みで
-
peco
やfzf
にもすぐ変えられるだろう - 特にエラー制御はなし
以上。
先週これが出来なくなっていて不自由していたので、これで安心。
自分で書いたことで縦揃えを組み込むことが出来たので、満足。
Author And Source
この問題について(GitHub の Pull Request を絞り込みで選択して手元に持ってくる), 我々は、より多くの情報をここで見つけました https://qiita.com/suzuki-hoge/items/e5199d3aad9ed047686c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .