ベータ版の時、Visual Studio 2005の方はけっこう触っていますがVisual SourceSafe 2005は手が回っていませんでした。
なので、やっと試用してみました。
バックグラウンド・ソース世代管理の個人史 §
どういう立場で評価しているのかを明示した方が分かりやすいと思うので、先に書いておきます。
MSKK社員の時代に社内ツールのSLM(という名前だったと思う)を使っていました。MSKKをやめたあとでRCSを使って、SLMのできの良さを痛感。そのまま、MS製品のDeltaが出たときには迷わずDeltaを採用。しかし、Deltaの後継ソフトは無く、結局MSは外部から買ってきたSourceSafeをソースコードの管理ソフトとして発売。Deltaのデータベースをそのまま取り込めたので、私もこれに移行しましたが、これが優れものでした。ちょっとファイルが壊れていても、何とか稼働してくれて助かりました。
とはいえ、SourceSafeは6.0で進化が止まってしまいました。そこで発生した重大問題は、UTF-8のファイルをテキストとして扱えないということでした。Visual Studioが生成するXML文書などは、UTF-8であることが多いのでこれは致命的な問題でした。もちろん、バイナリファイルで登録すれば正しく扱えるのですが、差分を表示させることができません。
ちなみに、SourceSafe 6.0にUTF-8のファイルをテキストとして追加すると、チェックイン・チェックアウトを繰り返すと無意味な改行が増殖するといった現象が見られました。
もう1つ、不安定かつ低速なVPN経由で使うのは、転送量的な問題と安全性の問題から、あまり上手く機能しないという問題がありました。ファイル共有型のソースコード管理ソフトの限界という感じもありますが。ファイル共有ではない方法で通信を行うソフトがあれば良いという印象はありました。
というわけで、待望のSourceSafeのバージョンアップです。
UTF-8は扱えるか? §
試してみるとバッチリです。
しかも自動認識も良くできています。
シフトJISとUTF-8のテキストファイルを混在させて試してみましたが、正しく判定されました。
というわけで、この点は好感です。特に問題は見いだせません。
(もっとも、理論的に、全てのケースで正しい判定を行うことはできないはずです)
インターネット対応はどうか? §
さて本題です。
Visual SourceSafe 2005はインターネット経由で(つまりファイル共有経由ではなく)データベースにアクセスできる機能を持ちます。
というわけで、試してみました。
仕掛け §
IISにSOAPベースのWebサービスがインストールされます(仮想ディレクトリとして)。
つまり、クライアント側からはSOAPでリクエストを投げ、サーバ側はWebサービス本体が(おそらく)SourceSafeのデータベースにアクセスします。
Webサービスは、SourceSafe Administratorから容易にインストールできます。
暗号化の問題 §
単なるSOAPインターフェースでしかないので、当然のことながらそのままでは暗号化されません。暗号化が必要な場合は、SSLを使って構成する必要があります。
しかし、単にそれだけのために証明書をどうしようか等と考えるのは面倒……。
データベースの制約 §
Webサービスで公開するSourceSafeデータベースは、以下の2つの制約を持ちます。
- SourceSafe Administratorで開く際、データベースをUNCで指定しなければならない
- データベースはWebサービスを実行するマシンのローカルファイルになけれなならない
つまり、ローカルファイルにしかアクセスできないのに、UNCで指定しなければならないという、けっこう間抜けなシチュエーションが発生します。とはいえ、これは何かの安全性の向上に寄与するようです。
この制約は、実は非実用的です。なぜなら通常の運用形態を考えるとデータベースは防火壁の奥深くに守られたサーバに置かれるケースが多いと考えられるにも関わらず、外部からアクセスしたいと思うなら防火壁の外部からアクセス可能なサーバにWebサービスをインストールしなければならないためです。つまり、この運用形態は実行できません。
これを解決するには、おそらくプロキシサーバを導入するしかないでしょう。ちなみに、プロキシ越えができることがSOAPの存在意義として数えられているので、おそらくは可能な運用でしょう。しかし、プロキシサーバを入れてきちんと維持運用するのもけっこう面倒……。このためだけに入れたいとは思いません。
クライアントの不在 §
インターネット経由のアクセスを行うクライアントは、Visual Studio 2005用のプラグインだけで、通常のSourceSafeエクスプローラではインターネット経由のアクセスを行うことができません。
これが何を意味するのかというと、Visual Studio 2005以外のツールで扱うファイルをインターネット経由にてSourceSafeによって管理することはできないのです。
これを解決するには、単純にSourceSafeエクスプローラの代用品としてVisual Studio 2005を使う必要が生じます。まだ確認していませんが、もしもVisual Studio 2005によって扱えないファイルがあったり、Visual Studio 2005が必要ないのに作成してしまうファイルがあると、困ったことになるかもしれません。
結論 §
いろいろ試してみると、第1印象に反して、ほとんど旧バージョンと変わっていないという感想になりました。
インターネットアクセスの機能も制約がきつく、なかなか期待通りの運用は難しい感じです。
別のソフトに乗り換えようか……ということも真剣に考えましたが、既存のデータベース資産を考えると、気楽に乗り換えもできません。それに、CVSのあたりはあまり好きではないし。
現状では以下のような運用を行うしかないでしょうか。
- インターネットアクセスもVPN経由で実行する
- つまり、SOAPインターフェースは内部サーバで実行する
- 外部から直接見える暗号化されたソースコード管理は諦める
- 無駄が多いがSourceSafeエクスプローラの代用品としてVisual Studio 2005を使う
うーん、なかなか難しい。
こんな感じでどこまでやれるか試してみましょう。