2005年02月14日

「Visual SourceSafe」の問題点

VisualSourceSafeを使用していて困った事。
個人的にいやな仕様を以下に示す。

・チェックインするとリードオンリにされる。
・無理やりリードオンリ属性を解除して編集できるが、更新時に選択に迷うダイアログがでる。
・編集するには事前にチェックアウトする必要がある。
・オフラインでは基本的にチェックアウトできない。
・オフラインでは操作内容によって何度か通信タイムアウトを待たされる。
・無理やりチェックアウトできないことはないが、更新時に選択に迷うダイアログがでる。
・誰かにチェックアウトされていると、デバッグコードをテスト的に入れることもできない。
(チェックアウトできないので編集不可。この状況の発生確率は意外に高い。)
・上項の問題が発生しやすいので、結果的にチェックインを頻繁に行うようになる。
・上項の要因により適切なタイミングではないチェックインが多く発生する。
・VSプロジェクトがVSSと密接に関連しすぎ。VSSの無い環境や、ネットワークの無い環境に複製した時困る。

さらに、致命的な問題として、

・ネットワークタイムアウトなどにより、チェックイン完了で無いのに、クライアント
で完了された事になる場合がある。
・上記の状態で、最新バージョンを取得すると、ローカルファイルのタイムスタンプもファイル内容も比較されず問答無用でサーバ側ファイルで上書きされる。(つまり、この間に編集した内容は消失する。)
・プロジェクト参照ファイルが他のフォルダにある場合、そのプロジェクトをソース管理に追加すると、最も親フォルダ寄りにある参照ファイルの親ディレクトリからすべてのフォルダがソース管理に追加される。(正しく追加できる場合もある。)
・上記の回避を行うにはかなりトリッキーな操作を必要とする。
・実質プロジェクト単位でなくファイル単位でバージョン管理を行うので、ローカルとのコンフリクト時に聞かれるダイアログでは中途半端な応答をすると、どのバージョンでもないプロジェクトが展開される。

とにかくオンラインである事を強要する仕様な上トラブルも多い。
なのに、本家もその他のドキュメントでも、トラブルシューティング情報が少ない。
2005バージョンでは、上記の問題点の多くがクリアになっているとの記述を見つけたので、6.0dの導入は様子を見た方が良いだろう。

筆者的には「SubVersion」+「TortoisSVN」がオススメだ。
環境連動しないのと複数の同時チェックアウトを禁止する機能がないくらいで、手間はたいしてかからない。

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/nobiru/14263441
この記事へのトラックバック
nobiruさん[blog.livedoor.jp]の「Visual SourceSafe」の問題点[blog.livedoor.jp]に対するコメントを書いていたら長くなりすぎたので、自分のBlogに投稿しておきます。 とりあえずVSS派(笑)としてのコメントです。 「チェックインしたファイルがリードオン.
VSSの問題点と対策【トカゲの独り言】at 2005年02月16日 03:17
この記事へのコメント
初トラックバックありがとうございます。

この記事は、余計な問題解決に時間をとられない為の提案として私の経験を公開しようと思いました。

以下のような記事もあります。

http://www.highprogrammer.com/alan/windev/sourcesafe.html

彼は、これらの経験が自分だけではないと学んだそうです。
この記事を読んで私もそう思いました。
Posted by nobiru at 2005年02月16日 10:15
どもコメントありがとうございます。リンク先の記事、拝見しました…ごもっともですね orz

気になる点も無いわけではない(3つのプロジェクト全部でVSSリポジトリがぶっ壊れたとか)ですが概ね賛同できる内容です。VSS使っていると自然と危険を避けるようなバッドノウハウが蓄積されてきます(笑)。

Client/Server構成でないというのが、お手軽である反面いろんな問題を生み出しているなぁとは思ってます。

CVSかSubversionあたりも試してみるかなぁ…まあCVSは使ったことがあるのですが、ファイルが読取専用じゃないのがどうも落ち着かないです(笑)。
Posted by lizy at 2005年02月17日 01:56