VCS(gitやsvn)で管理してれば過去のファイルを取り出せるって言うけど
git や svn のようなバージョンコントロールシステムの管理下にあれば、過去のファイルを 簡単に 取り出せるー!って言う人たまにいるけど、そんな簡単じゃないよね?
道具はある
例えば git なら
$ git checkout 947bdf9 FILE
とかすると、FILE を指定したコミットハッシュ(上だと 947bdf9)の状態に戻せる(FILEじゃなくてディレクトリでもOK)。
svn なら
$ svn cat -r 17 FILE
という風にリビジョンで指定する。まあこの手のコマンドはそこそこ揃ってる。
ほうほう、これなら日付で絞ってログを漁ればなんとかできそうじゃん、って思えると思うんですが、現実はおうおうにしてそんな単純ではありません。
履歴は黒い
コミットの履歴が浅いとか綺麗とかならまあいいんですけど、現実はだいたい以下のようになっています。
- あるとき、機能単位でブランチがマージされる(これは普通)
- 上でマージされたファイルの一部が別機能のために更新される(まあ普通)
- あるファイルは変名されたり移動させられている(ま、まあ普通)
- あるファイルは削除される(そりゃそういうこともある)
- 削除されていたファイルが、あるとき、変名でしかもちょっと差分入りで追加されている(突然の死)
- 上記の操作が短期間に繰り返し行われている
- 目的のファイルはバイナリ
白目剥いて倒れる。
まあ、サルページとか滅多にやるもんじゃないんだけど、青年の主張的に思うより面倒くさいこともあるよというメモ。