前置き
.gitignoreを正しく運用していますか?
プロジェクトの立ち上がり時にはきちんと考えられて作成をすると思いますが、開発が進んで行くと思いつきで対象リポジトリに存在する.gitignoreに要素を肉付けのように足して行く運用を良く目にする気がします。
当記事で.gitgnore毎が持つべき関心を考え、美しい状態とは何かを考えたいと思います。
.gitignoreは複数あるという考え
一般的にはリポジトリ毎に作られるものと各環境毎に作る.gitignore_globalの二つを元に考えられていると思います。
この2つの.gitignoreで運用することは十分可能ですが、さらに細分化させることが可能だと考えています。
細分化した.gitignore
チームで開発している場合以下のように細分することができるかと思います。
- application.gitignore
- repository.gitignore
- team.gitignore
- global.gitignore
それぞれが持つ関心
application.gitignore
リポジトリ内に複数のアプリケーションが作成される場合作られると考えています。
内容についてはそのアプリケーションで無視したい内容になります。
github/gitignoreの内容が一般的かと考えています。
repository.gitignore
リポジトリ内に一つのアプリケーションの場合はapplication.gitignoreの内容も足されます。
また、設定ファイルなども場合によってはここに追加されると思います。
team.gitignore
各メンバーに配布されるための共通.gitignoreになります。
チームの決まりとしてvscodeを利用する事が確定されているならこれに追加されるべきだと考えます。
ただし、この開発環境はリポジトリ毎に変わる場合ならそのリポジトリに収めるべきですし、逆に各個人に委ねている場合は個人でglobal.gitignoreとして管理するべきだと思います。
global.gitignore
各個人が管理するgitignoreです。チーム以下のスコープで確定されていない要素は個人で管理すると考えています。
まとめ
現実的な話、運用するのは全てリポジトリの.gitginoreに書き足すのが楽で確実です。
ですが、抽象的な話でしたがこの記事をきっかけに美しい.gitignoreについて検討し運用が出来ることになれれば幸いです。
自分もこういった運用ができるようになりたい。