SubVersion クライアント TortioseSVN を使ってみた

Subversion VS VisualSourceSafe からトラックバックさせていただきました。

riye_techさん(↑)も指摘されている様に、VSSで各プロジェクト間で共有されるべきファイルを共有する機能 - その名も共有 - が、SVNには無いようです。

何度も何度もSVNに興味を持ったのですが、それが見つからない(後にないと判った)ため、今回も断念。

VSS(Visual Source Save)+VS(Visual Studio) が掲げる方針は、従来の考え方から一歩進んでいる。

SVN (Sub Version - オープンソースのバージョン管理システム)
VSS (Visual Source Safe - Microsoft社純正のバージョン管理システム)
VS (Visual Studio - Microsoft社純正の統合開発環境)

VSS+VS では、プロジェクト(ソリューション)に含まれるバージョン管理の対象となるファイルは、すべて「ソリューションフォルダ以下にローカルコピーを保持しろ」と言っています。つまり、すべてのファイルをソリューションの管理下に置くということ。ファイルを共有する場合は、その共有ファイルのローカルコピーをソリューション管理下に置きます。共有されている同一のファイルのローカルコピーがそこかしこに出来ますが、VSSを通して共有をすると、VSSがそれぞれを最新の状態に保ってくれるというイメージ。

SVNでは、より原始的で、フォルダの中身を丸ごと、もしくは必要なファイルだけをバージョン管理する。1つのフォルダの中身は、SVN上でも1つのCSVフォルダに入っていて、作業フォルダには、別のCSVフォルダから取り出したファイルの共有コピーを混ぜる事はできない。そもそも共有コピーという概念がない。これはSVNの仕組み上の制約。(もし出きるのであれば、誰か教えてください ^^;)

このように、ファイルの管理方法には、VSSとSVNとではかなりの違いがある。

もし、SVNで共有ファイルを管理しようとしたら、その共有されるファイル群は、プロジェクト本体とは別のフォルダに保存して、プロジェクト内から、相対パスでそれらの共有ファイルを参照することになる。つまり、SNVNのリポジトリにCommon、A、Bという3つのフォルダがあり、これらをA+Common、B+Commonという組み合わせで使いたいとしたら、

方法1:すべてを1つのフォルダの中にチェックアウトしてしまう。
 projects
  Common
  A
  B

方法2:個別のフォルダを作成し、それぞれに必要なものだけチェックアウトする。
 projects
  projectA
   Common
   A
  projectB
   Common
   B

のような使い方になる。
必要なファイルを限定して1フォルダにまとめるというVSS+VS考え方からすると、方法2 の方がVSS+VSの使い方に近いかな。
Commonをさらに機能毎に細分化して、ファイル単位の共有に近づけることも出きるかな。

SVNは、「今まで単純にファイルをバックアップして管理してました。」というひとには、非常にわかりやすい仕組みではある。
もし、VSNを最初に使用していたとしたら、VSSの共有の仕組みがかなり理解不能だったかもしれない。
(現に共有をうまく使えるようになるまでだいぶ苦労した。。。)
けど、一度VSSの共有機能に慣れてしまうと、ちょっとSVNは使いにくい。

しかも、既にVSSで共有管理しているプロジェクトたちが既に数十あるわけで、、、
それらのプロジェクトの参照先をすべてプロジェクトフォルダ直下からプロジェクトフォルダ外への相対パス指定に変更するとなると、、、ものすごい労力。。。

なぜ、VSSじゃいけないのか?
別にいけない訳じゃないんだけど、はっきり言って「VSSのインターフェイスが使いにくい」の一言に尽きる。
まだ、VSのソリューションに含まれるファイルは良いが、自分でファイルをソース管理に追加したり、変更したりしていると、どのファイルが追加済みで、どれがまだかを確認するのに、自力で比較するしかないのが辛い。
すべてのファイルをVSのIDE上で管理すればすんなりといくかというと、そうでもない。VSのIDE上でフォルダを作成して、ファイル毎に整理しても、実際のファイルが保存されている場所との関連性がない。いくらIDE上でフォルダに入れても、ファイル作成のときに同じフォルダを作成してそこに入れないと、見にくくなってしまうし、あとから移動させるのも、VSS上で移動して、フォルダを作成して移動して、IDEに再登録と面倒な手順となってしまう。
だから、私は、ソース以外の関連ファイルは、IDEを使わず、自分でフォルダを作成して、手動でVSSに登録するようにしている。
それに比べ、TortoiseSVNのシェル拡張によってエクスプローラに統合された直感的なUIは、非常に魅力的。管理されているファイルと、されていないファイル。変更されているファイルといないファイルが、エクスプローラのアイコン上に張り付くマークで一目瞭然なのです。
VSSも純正なんだから、そのくらいやってほしいものだ。

TortoiseSVNは、どんどん高機能化してきており、ビジュアルマージが出きるようになったので、かなり使いやすくなっています。
VSSのファイル単位の共有を、機能毎にフォルダ分割してフォルダ単位の共有にすることで、どこまでできるか。。。
もう少し、検討してみたいと思います。
[PR]
by isoq | 2009-04-03 01:30 | C/C++/Win32
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇
<< 超劇場版ケロロ軍曹 撃侵 ドラ... デルなら断然お得!比べれば一目... >>