Golangのツールをチームで開発しているのですが、Merge Requestをmergeする度にgo.sum
とのconflictが発生する。つらい。
実のところは「つらすぎる」というほどつらくはないのですが、毎回conflict markerの<<<<<<<
を消していく作業で人生を浪費するのはつらい。
というわけで、暫定的に.gitattributes
でunion merge driverを指定する運用をはじめてみました。
$ grep go.sum .gitattributes go.sum merge=union
.gitattributes
についてはここでも書いた。
理屈
テキスト系ファイルに対しGitで利用されるデフォルトのmerge driverはtext
です。
このmerge driverでconflictが検出されると<<<<<<<
や>>>>>>>
でconflictしている箇所を教えてくれます。
一方で、テキスト系ファイルに対するmerge driverにはunion
という代替案があります。
これはunion
という名前の通り、conflictが発生したときにconflict markerを残すのではなく、その発生箇所の和集合をとってくれるというドライバです。
つまり、mergeを人手で解消する必要がなくなります。ハッピー!
もちろん和集合で良いのかという問題はありつつも、go mod tidy
してればなんか良い感じになるんじゃない?と雑に考えております。
merge driverについての詳細はここらあたりをご参照ください。
仮運用
いくらかこれで仮運用してみて、問題なさそうであれば.gitattributes
をリポジトリにコミットします。