Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

結論

ここに書いてある

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away