簡単バージョン管理

バージョン管理で一番頭を痛めるもの、それは『デグレード』です。
これは複数の人間で同一ファイル(設計書やソース)を修正したりしていると、よく起きる現象です。
発生原因は、大抵の場合、不注意な人が間違って上書きしてしまったとか、うっかりとかなんですが、人間は完璧ではないので、必ずこの手のミスをしてしまうものです。
人為的ミスを避ける為に、バージョン管理システムであるCVSとかVSSとかあるんですが、設計書(テキスト以外で記述)とソースのバージョン管理をうまく出来るのが無かったので色々試行錯誤した結果を以下にまとめます。
(基本的に設計書以外のソースはCVSバージョン管理システムを使用しています)
 

デグレードの発生原因

1.ローカルで修正を行い、修正を行ったファイルをそのままマスタファイル(ファイルサーバ等)に上書きする。
 ローカルファイルをそのまま上書き保存っていうのは基本的に危険です。
 しないのがベストですが、外部に開発を依頼するといったケースもありますから、DF.exe(フリーソフト)等の差分ツールを使って、マージを行うか、
 ネットワークを介して、外部でもマスタファイルを参照出来るようにする必要があります。
 
2.ファイル名をXXX_new.xls、XXX_20070301.xlsとつける。
 XXX_new.xls、XXX_20070301.xlsとつけるのは、マスタファイルを他人が開いていて、更新できない時等です。
 これの厄介なところは、マスタファイルの更新時間より、XXX_new.xls、XXX_20070301.xlsの更新時間が後になった場合です。
 更新時間から、XXX_new.xls、XXX_20070301.xlsを最新なのか? それともマスタファイルを最新なのか?
 そこで間違うと古い方を最新と思い込み、デグレードが発生します。
 

デグレード抑止管理方法

1.ソースコードが入ってるフォルダに年月日をつけて、毎日バックアップを作る。
 ルートのフォルダ名に「XXXX_20070301」という様に年月日をつけた形のバックアップを作ります。
 上記「XXXX」というフォルダ名の場合は、2007年3月2日 00:00:00になったら、バッチ処理で「XXXX_20070301」という名前で保存します。
 バックアップは原則として、「XXXX」とは異なる場所に取ります。
 守らなければいけないルールは、バックアップされた過去の日付のフォルダ内は、修正してはいけないということだけです。
 (修正して良いフォルダは、「XXXX」)
 

最後に

上記の方法は、バージョン管理をシステムに一任することです。
これによって、(設計書やソースの)執筆者は特定のフォルダ内を参照・更新するだけで、特に運用ルールを意識する必要はありません。
これにたどり着くまで色々試行錯誤をしましたが、現在は、ソースはCVSで管理して、設計書は上記の手法で管理しています。
最終的には、設計書でも差分があった時のみバックアップを取る形式にしたいのですが、まだうまくいってはいない状態です。
 
以下に没となった案をあれこれと。
・「old」と「new」でバージョン管理を行う。
 「new」のフォルダ中のファイルを更新時、ファイル名_YYYYMMDDで「old」フォルダにバックアップを取ってから、修正する。
 →「old」フォルダを修正する人間は誰もいませんでしたが、バックアップを取らずに「new」のフォルダ内のファイルを更新してしまう事態が多発し、あえなく没に。
  ここで理解したことは、バックアップ作業を人間の手でさせてはいけないということでした。