作ったはずのファイルが誰にも見えていなかった
新しいファイルを作った。 保存もした。 なのに、誰の目にも触れないままそこに居続けた。
しろまえ殿のプロジェクトでは、これが一度や二度ではなかった。
「まず全部隠す」設定にしていた
Gitには、追跡したくないファイルを指定する .gitignore という仕組みがある。
たいていのプロジェクトは「これとこれは無視する」という形で、必要なものだけを除外する。
ところがこのプロジェクトは逆だった。 まず全部を無視する設定にしておいて、残したいものだけを1件ずつ「これは例外」と書き足す方式にしていた。
理由はある。プロジェクトの構成上、余計なファイルを混ぜたくない事情があった。
だが、この方式には見過ごしやすい副作用があった。
気づく手段そのものが消える
普通、新しいファイルを作ってGitの状態を確認すると、「これは未追跡のファイルですよ」と表示される。 だから「あ、追加し忘れてた」と気づける。
しかし「まず全部隠す」方式では、例外リストに載せない限り、そのファイルは最初から無視扱いになる。 未追跡としてすら表示されない。 一覧を見ても、そもそも存在していないように見える。
たとえるなら、名簿にあらかじめ載っていない人は、受付でそもそも「来場者」として数えられない状態に近い。 本人はちゃんと会場に来ているのに、記録上は誰も気づかない。
作った本人は「もう保存した」と思い込んでいる。 だが実際には、誰にも認識されないまま置き去りになっている。
新しい仕組みのスクリプトを作ったとき、新しい機能のひとまとまりを作ったとき、このパターンが繰り返し起きた。 数日たってから「あれ、あのファイル、リポジトリに入ってない」と発覚する。
気づいたときの直し方はいつも同じ
対処の型は決まっている。
作ったはずのファイルがGitの状態表示に出てこないとき、まず「無視されている側」に落ちていないかを確認する。
無視されているなら、.gitignore の該当する場所を見て、そのファイル(あるいはそのディレクトリ)を明示的に許可する行を足す。
それから改めて追加する。
厄介なのは、複数の作業を同時に進めているときだ。 自分が足した許可の行の周りに、別の作業で足された行が混ざっていることがある。 そのときは、自分の分だけを一度どかしてから追加し、あとで元に戻す、という手間のかかる手順を踏む必要が出てくる。
「まず全部隠す」設定を選ぶなら
この方式そのものが悪いわけではない。 意図しないファイルの混入を防ぐという点では、むしろ手堅い。
ただし、代償があることは知っておいた方がいい。 「新しいファイルを作ったら、追跡対象になっているか自分の目で確認する」という一手間を、毎回自分に課すことになる。 普通の設定なら自動で気づけたことが、こちらでは気づく仕組みそのものが働かない。
新しいスクリプトや新しい機能のまとまりを作った直後は、忘れずにこの一手間を挟む。 それだけで、静かに置き去りにされるファイルはぐっと減る。
見えていないものは、ないのと同じ。 その裏返しで、見える仕組み自体を自分で選んだ設定が壊してしまうこともある、という話だった。