お疲れ様です。
GitHubでプルリクエストが乱立していて、
片っ端からdevelopブランチにマージしていく作業で1日が終わる、そんな日もあります。
プルリクエストのFiles Changedが更新されない・・・
ふと、子ブランチをdevelopにマージしたのに、
孫ブランチのプルリクエストを見ると、子ブランチ分の差分が更新されていないことに気づきました。
孫ブランチに子ブランチをマージしてもダメ、developもマージ済みの状態でした。
参考:GitHubのプルリクエストの差分はどこと比較しているか?(git diffの".."と"..."の違い)
この記事を見たところ、GitHubのヘルプに、以下のように記載されていて、差分はトリプルドットとのことでした。
By default, pull requests on GitHub show a three-dot diff, or a comparison between the most recent version of the topic branch and the commit where the topic branch was last synced with the base branch.
参考: About comparing branches in pull requests
マージしても更新されない状態・・・
しかし、本来、ベースブランチとの差分は孫ブランチの修正しか無い状態なのに、
子ブランチの差分が出てしまっていてどうもおかしい。
トリプルドットでも子ブランチの差分は無くなるはずです。
プルリクエストを作りっぱなしの状態のため、差分がキャッシュされていると思い、
試しにプルリクエストを作り直したところ、期待通り現状のベースブランチとの差分が検出されました。
やはりプルリクエスト作成時のベースブランチをキャッシュしているようです。
ちなみに一時的にプルリクエストのベースブランチをmasterにするなどしてから戻しても、差分が更新されました。
ベースブランチを変更する時のメッセージにヒントが
ベースブランチを変更する時、以下のようなダイアログボックスが表示されていました。
Some commits from the old base branch may be removed from the timeline, and old review comments may become outdated.
つまり
古いベースブランチからの一部のコミットはタイムラインから削除され、古いレビューコメントはoutdatedになる可能性があります。良いですか?
と聞いてきていました。
レビューコメントのために、古いベースブランチをキャッシュしているんですね。
コメントの仕組みを考えてみれば納得でした。
まとめ
- プルリクエストのFiles changedのベースブランチ情報は保存されている
- プルリクエストを作成した時点のベースブランチを保存している
- ベースブランチが更新されてもプルリクエストのベースブランチ情報は更新されない
- プルリクエストのベースブランチを変更しても情報が更新される