暇を見てVSS(VisualSourceSafe)から乗り換えるつもりでSubversionを評価していましたが、前面的に乗り換えるまでには行かないようです。
自分にとって重要な機能がSubversionにはありません。
それはファイル単位の共有機能です。
ファイル単位の共有機能は例えばC言語を例に例えると、サービス関数をまとめたファイルがあったとします。
サービス関数はソートなどのアルゴリズム処理や自分でよく使用する計算処理などをまとめたものを指します。
それをVSSのファイル共有を行うと、全く別のプロジェクトをまたいでこのサービス関数のファイルを扱うことが可能です。
Aと言うプロジェクトでサービス関数のファイルが完成しました。
Aを納品後、Bと言うプロジェクトがスタートしました。
Bでもサービス関数のソースファイルは使用します。
しかしBの作業中サービス関数にバグが見つかりました。
致命的なバグであればAのプロジェクトにも修正しなければなりません。
ファイル共有をしていない場合、Aのサービス関数ファイルとBのサービス関数のファイル2種保守をしなければなりません。
しかしファイル共有を使用していれば、Bのサービス関数でバグを修正したソースはVSSの”最新バージョンの取得する”機能で一発でAのソースを更新できます。あとはビルドするだけで済みます。
それくらいコピーすればいいじゃんと言う意見もありますが、このサービス関数を使いまわすプロジェクトが増加するたびにファイルコピーしなければなりません。
プロジェクトが30個あった場合は面倒ではないでしょうか。
こうしてソースを常に保守することで同じ作業を繰り返す必要もなく、効率的に作業を行うことができます。
私は2000年くらいからVSSを使用しはじめ、Windows以外のターゲットにも使用しています。Cで作成したソースは、コンシューマ機やPalmやBREWなどにも使いまわすことが可能なのです。
これらのプロジェクトは同一のVSSのデータベースにまとめて保管しています。
おかげでデータベースの容量は画像データなども含んでいるので数GBあります。(笑)
もちろん携帯のJavaもVSSで管理しています。(←さすがにJavaは別のデータベースに分離しました)
単一のプロジェクトで完結する場合にはファイル単位の共有機能はあまり必要はないでしょう。
しかしソースコードを成長させると言う意味では重要な機能であると思います。