prowでPRのsquashしてもlgtmが外れないロジックの実装箇所
ここに書かれてる内容 に関して。
マージされたPRはkubernetes/community#5779。
GitHubのPRの各種イベントが発生したときにLGTMプラグインがラベルを外すかどうかを判断する部分は、prow のこの辺り に実際のロジックがある様子。
opts.StoreTreeHash
の説明はここ。
一方、store_tree_hash がTrueになってるのは website くらいなので、通常であれば、ユーザが手動でSquashして、その結果コミットハッシュが変わると、その瞬間にLGTMラベルは外れる。
つまり、LGTMラベルの方で、tide/merge-method-squash
などのラベルを判断してLGTMをそのまま保持するというロジックは特に存在しない。
では、冒頭の記述はなにか?
tide/merge-method-squash
などのタグを打っておくと、Squashは手動ではなくて、Tideの方でマージのタイミングでやってくれるので、ProwのLGTMプラグインがラベルを外すという処理が走ることもないため、結果としてSquash操作によるLGTMラベルの削除は実行されない。
このことを、and will not result in removal of the
LGTMlabel (if already applied)
と言ってるようだ。
つまり、tide/merge-method-squash
などのラベルを設定したPRに関して、ユーザによる手動のSquashは実施しなくてよい。Tideがやってくれるので。ただ、これ、追加のコミットをPRに追加したりした時はたとえ tide/merge-method-squash
がついててもLGTMが外れるのではないだろうか。
というか表現的には、TideがSquashしてくれるのでユーザによる手動Squashをする必要がないよ。でも手動SquashするとLGTM外れるよ。の方が正しいのではないか。