ソフトウェア構成管理について

今までのプロジェクトでは単純にソースの共有という意味合いだけで
CVSやVSSのツールを使って来た。

でも今度のプロジェクトではソース以外のドキュメントも全てSVNで管理している。
珍しいなあと思ったけど、慣れたらこっちが全然楽。

例えばエクセルで書かれたテーブル定義を更新する際に、

1.まずコピーして、
2.前日の日付タイムスタンプをファイル名の末尾に付けて、
3.back_upフォルダに移動して
4.それから変更

というよくある手順を踏む必要が無い。
あらかじめドキュメントディレクトリを全てチェックアウトしておき、
書き始める前に更新し、
書き終わったら修正来歴を記入してコミットするだけだ。

前述の手順はうっかり忘れて保存してしまうと変更前のデータに戻すことが出来ない。
忘れるなと言ったらそれまでだけど人間だもの、絶対は無い。


こういったソースだけでなく、
システムに関わるハードウェア以外のものを全て管理する方法論を
ソフトウェア構成管理(Software Configuration Management、SCM)
というらしい。
せっかくだから以降、SCMと呼ぼう。


自分が今まで使ったことがあるSCMは
・VSS(Visual Source Safe)
CVS(Concurrent Versions System)
SVNSubVersion

今回念願だったSVNを使用出来た、CVSと非常に似ており(そう作ったらしいし)
CVS経験者なら戸惑わずに移行出来ると思う。
今回は社内LANでの使用だけどせっかくHttp(s)にも対応しているから外部のサーバと繋いでみたいな。


この3種類の違いについてはコチラに詳しく載っている。
http://www.idomi.info/index.php?SVN%A1%A2CVS%A1%A2VSS%A4%CE%C8%E6%B3%D3%A4%F2%A4%B7%A4%C6%A4%DF%A4%EB

概ね、SVNに不満が無い。
けど前述のサイトにも書かれている通りに、
複数人で同時に編集が可能なのでバイナリーファイルの編集を行う場合だけは注意が必要だと思う。
(テキストファイルならぶつかった時に人によるマージが出来るので問題無い)

でも実際にバイナリーファイルで編集が必要なのはワードやエクセルのファイルだと思うし、
それらに書かれているのはきっと
システム構成図やら、
画面遷移図やら、
ER図やら、
テーブル定義やら、
コーディング規約などだと思うので同時に複数の人で編集することは実際は少なく、
運用で回避出来るレベルだと思う。

それでも衝突しまくる時は、
ファイル構成や運用方法の方にリファクタリングが必要だと思う。