気まぐれな備忘録(仮)

いちようSEしてるので、プログラミングの備忘録的なものを書いてます

TortoiseSVN1.7になって.svnの扱いが変わった

最近、客先の環境で作業をするようになったので、
TortoisesSvnをDownloadあんどInstallした。

はじめは何も気にすることなく使っていたが、
突然、何か違和感があることに気付いた。

「.svn」ディレクトリがないぞ。。。


そう、TortoiseSVNでCheckoutしたディレクトリ配下なので、
いつもなら「.svn」という管理用の隠しディレクトリが存在するのに、
それが何故か存在しない。

はじめは、うっかりExplolerの設定で
隠しファイルを非表示のままかと思ったが、
設定を確認したところ、そうでもなかった。


ちょっとググってみると、以下のブログに行き当たった。

http://d.hatena.ne.jp/lino/20111014/1318597181

どうやら、これはTortoiseSVN1.7からの
WC-NG(Working Copy Next Generation)という新機能らしく、
ルートのみに「.svn」が存在するらしい。

オレの利用ケースからすると、これはヒジョーに使いづらい。。。

ここから自分勝手な推測になるのだが、
ルートの「.svn」にルート配下のデータを全て所持しているようで、
初回のチェックアウトに時間がかかる。

どういうことかというと、
自分はSVNからCheckoutするときは
いつもSVNのルートからUpdate depthを
「Immediate children, including folders」に指定して、
必要なところだけ、「Fully recursive」にしている。

たとえば、リポジトリのディレクトリ構成が以下の場合を考える。
よくある標準的な構成である。

SVN_ROOT
├ branch
├ tags
├ trunk
└ work


TortoiseSVN1.6までだと、
SVN_ROOTにて「Immediate children, including folders」でチェックアウトすると、
branch, tags, trunk, workのディレクトリのみをチェックアウトするので、
1秒もかからない。

しかし、TortoiseSVN1.7だと、
例え「Immediate children, including folders」でチェックアウトしても
たったの4つのディレクトリをチェックアウトするだけなのに、
その配下のデータを全てリポジトリからDownloadしているようにみえる。

なにせ、5分待ってもチェックアウトが終わらないからキャンセル、
という操作を3回も繰り返してしまった。。。オレはアホだ。


必要なディレクトリだけをCheckoutする、
というユーザにとっては何も困らないと思う。

自分は、同じリポジトリを複数のディレクトリからローカルにCheckoutすると
ローカルのディレクトリ構成がカオス化してしまうのを嫌って、
上記のように「Immediate children, including folders」と
「Fully recursive」を使い分けていた。

こうすることで、不要なディレクトリのデータをダウンロードすることなく、
ローカルのディレクトリ構成をリポジトリと合わせられた。


確かに、一度チェックアウトすれば、
SVN操作の時間は体感的に早くなった気がする。

しかし、それはいつも2〜3秒の操作が1〜2秒、という感覚。
そんな秒単位の時間なんて全く気にもならない。

むしろ、2〜3秒で終わっていたcheckoutという操作が
数10分〜数時間かかるようになった、というデメリットの方が目立つ。


構成管理がしっかりされているプロジェクトならマシとしても、
構成管理が計画的にされていないカオスなプロジェクトだったら、
上位ディレクトリでのチェックアウトに時間がかかってしまう。

末端のディレクトリを大量にチェックアウト、
または、リポジトリブラウザから直接データを取ってくる、
という無駄な作業ばかり増えてしまう。

特に、tagsなんて複数のバージョンが管理されているはずで、
ルートからCheckoutしようとすると、全バージョンのデータを
ローカルに落とすことになる。


昔の管理方法を選択する設定とか、ないのかしら??