🫥

.DS_Storeは~/.config/git/ignoreに入れろとあれほど

2024/06/17に公開1

背景

macOSではFinderによるファイル管理のため .DS_Store というファイルが自動的に作られますが、これは開発者個人の都合で生成されるファイルなので、Gitのリポジトリに入れたくありません。

では、ignoreしましょう。

.gitignore

.DS_Store

という選択肢もあると思うのですが、個人的にはこれは微妙だと思っています。

主張

以下のようなグローバルなgitignoreに書いた方が綺麗です。

~/.config/git/ignore

.DS_Store

参考: https://git-scm.com/docs/gitignore

リポジトリの .gitignore に書く場合、新しくリポジトリ作るごとに追加しないといけません。グローバルなgitignoreに書いておけば、開発環境をセットアップする際に最初に書いておくだけで済みます。特に個人で開発しているときなどはこちらの方が手間が少ないです。

また、複数の開発者の手が入るリポジトリについて考えると、 .DS_Store はMac特有の課題なので、これをリポジトリレベルの設定に組み込むのはなんとなく美しくないです。

ぼやき

とはいえ、「うちではプロジェクトを新たに作ることより開発者が新たに増えることの方が多いんだが?」とか、「リポジトリで設定してしまうのは最初に作る人が気をつけるだけでいいけど、グローバルなconfigに書くのは全員が気をつけないといけなくて漏れなく設定させるハードルが高いんじゃ?」とか言われるとそれはそうなんですよね。

.DS_Store をcommitさせないこと」が目的なら両方に書いておくのが一番安全です。

とも思うのですが、なんかダサいんだよな...

Discussion

rakiraki

チーム開発の時は長い目で見て(来年になれば新卒が来るとか人の入れ替えが起きることもある)教育目的という名目で”入れない”選択をすればいいと思う。

自分で設定していない人は git に弱いと考えられるし、.DS_Store が入っちゃうのは自分の環境すら整備できないレベルであると推測できるので、一度ちゃんと教育する必要がある、とすれば、引っかかってくれたほうが後で別の問題を起こす前に注意できていい、ということにして、環境固有の ignore は設定しないことにしてる。

.DS_Store が注目されがちだけど、Windows だって Thumbs.db あるし、 .swp 入れこんでくるケースもあるし、リポジトリに何を上げて何を上げないか、が判断できていない、コントロールできてない人を把握する手段、だと思えば、試金石であったり踏み絵だったりするもんかなって。