GithubのPullRequestを直接チェックアウトする
自分にレビュー依頼が来たPullRequestどうやってチェックしていますか?
複雑なものだと, そのPullRequestをローカルに落としてきて, 実行しないといけないかもしれません。
そうなるとどうやってそのPullRequestを落としてくるかですが…
わざわざ他人のリモートを追加して, 手動マージしていませんか?
実はGithubのPullRequestは(デフォルトでは見れない)ブランチとして存在しています。(自動マージチェックとかしてるじゃんあれは裏で自動でブランチ作ってマージしているからできます。)
なのでPullRequestを落としたければそのブランチをチェックアウトしてあげればいいです。
具体的な方法
以下fastlaneのリポジトリを使ってやってみます。
fastlaneのリポジトリを落としてくると.git/configファイルは次のようになっているはずです。
(sourcetreeで落としてきました。)
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = https://github.com/fastlane/fastlane.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
fetchの部分を「+refs/pull/:refs/remotes/origin/pr/」に書き換えてフェッチし直すと…
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = https://github.com/fastlane/fastlane.git
fetch = +refs/pull/*:refs/remotes/origin/pr/*
[branch "master"]
remote = origin
merge = refs/heads/master
こんな感じでPullRequestの番号に対応したブランチが出てきます。
ちなみにheadがPRしたそのもののブランチでmergeがマージ後になります。
以上
これなに?
refspec(参照仕様)ってやつです。
要するにブランチを検索するときのフィルタみたいなやつ(今回はそういう用途で使っています)
今まではrefs/heads/以下にあるものを参照するようにしていましたが, refs/pull以下を参照するように変えました。
注意点
1から全部のPRを持っているのでメインのローカルリポジトリに設定たさないで新しいの作ったほうがいいとおもいます。
それでも重ければrefspec調整してください。