Go
GitHub
golang

GitHubで自動生成コードをDiffに表示しない方法

結論

ここに書いてある

https://github.com/github/linguist/blob/master/lib/linguist/generated.rb

注意事項

だいぶ懐かしい記事ですが…突然、「Diffに表示しないなんてGitHubの価値を損なうものだから記事を非公開にするべきだ」というご指摘をいただいたので、念のため追記。

Diffに表示しない、ってことは当然PRにも見えません。
レビューされない怪しいコードが紛れ込むリスクを抱えることになります。
せいぜい自動生成分だけを非表示にして、CIの中で再生成、差分が出ないチェックを入れるなど、ガードの手は考えておいたほうが良いでしょうね。はい。ご利用は計画的に。

背景

mockeryだったり、swagger-codegenだったり、go-bindataだったり…
GitHub上に自動生成されたコードを載せている場合、PRやcommitの詳細画面でDiffが邪魔になることがあります。

  • .gitignoreでそもそも自動生成コードをリポジトリに載せない
  • generatedコードに冪等性を持たせてDiffを最小限にする

など対策は色々ありますが、 どうしても生成分をリポジトリに載せたいがGitHub上ではdiffとして見えなくていい 場合もあります。

今までさんざん色々探したんですが、いい対策方法が見つからず・・・
ところがどっこい、GitHub公式の方法で実現できたので記事にしてみました。

GitHubのdiffで特定のファイルを隠す方法

そんなときは、例えばgoの場合はファイルの先頭に

sample.go
// Code generated by xxx
:

と一行コメントしてやるだけで、Diffに表示されなくなります。

https://github.com/kyoh86/qiita/commit/1e151528d570c3613b478245d88aeb168ead2874

https___qiita_com_items_0d9f70d9970ae086f0ce_·_kyoh86_qiita_1e15152_·_GitHub.png

その他の言語でも

色々な言語で対応しているようです。
判定方法はrbのソースを見ればひと通りわかりそう…。

https://github.com/github/linguist/blob/master/lib/linguist/generated.rb

いつからできたんだろう?

結構探したんですが、GitHubのドキュメントやリリースノートも見つけられてません。
そんなん常識だが、とかここで書かれてたやん、みたいな話があったら教えてくれると嬉しいです。