この記事のURL

http://www.dango-itimi.com/blog/archives/2011/001088.html


FLASH tips TortoiseSVN 1.7 の WC-NG で eclipse Refactor (Rename, Move)機能が問題なく利用可能に

先日 TortoiseSVN 1.7 がリリースされ、それに伴い WC-NG(Working Copy Next Generation) というファイル管理方法に変更がかかりました。

 参考)Subversion 1.7が出たので、TortoiseSVN 1.7でWC-NGやってみた
 http://d.hatena.ne.jp/lino/20111014/1318597181
 
引用

Subversion 1.7の新機能の中でも個人的に嬉しいのが、WC-NG(Working Copy Next Generation)です。WC-NGは作業コピーのメタデータ変更で、フォルダの中にたくさんあった.svnフォルダがルートフォルダだけに集約されます。

今までは各ソースディレクトリ内毎に .svn ができてしまっていたため、eclipse(FDT) の Refactor コマンド(Rename, Move)を用いて「ディレクトリ名の変更」や「ディレクトリを他ディレクトリへ移動」を行うと、作業コピー内ディレクトリの構造が壊れてしまうという問題がありました。しかしこれからはその問題は発生しなくなります。


TortoiseSVN 1.6 以前の問題点

例えば以下のような Subversion 管理のディレクトリ構造があったとします。testA ディレクトリ内には AS3 ソースファイルの SampleA.as と SampleB.as が存在します。

root/
├ testA/
│ ├ SampleA.as
│ └ SampleB.as
├ testB/
└ testC/

実際には以下のように、各ディレクトリ内には隠しディレクトリ .svn/ が存在します。

root/
├ .svn/
├ testA/
│ ├ SampleA.as
│ ├ SampleB.as
│ └ .svn/
├ testB/
│ └ .svn/
└ testC/
  └ .svn/

Refactor Move コマンドを用いて testA ディレクトリを testB ディレクトリの下に移動させると以下のようになります。

root/
├ .svn/
├ testB/
│ ├ .svn/
│ └ testA/
│   ├ SampleA.as
│   ├ SampleB.as
│   └ .svn/
└ testC/
  └ .svn/

FDT の Refactor Move コマンドでは testA/SampleA.as と testB/SampleB.as の内容は自動で書き換えてくれますが、testA/.svn/ ディレクトリ内の内容を書き換える機能はありません。上記のように Move コマンドで root/testB/testA/.svn/ に移動しても Subversion 上では root/testA/.svn/ 上に存在している事となり、不整合が発生してしまいます。よって今までは、任意に root/testB/testA/ 内の .svn/ ディレクトリを削除したりしなくてはなりませんでした。

TortoiseSVN 1.7 以降

上記ディレクトリ構造例を TortoiseSVN 1.7 に適用すると以下のようになります。

root/
├ .svn/
├ testA/
│ ├ SampleA.as
│ └ SampleB.as
├ testB/
└ testC/

Refactor Move コマンドを用いて testA ディレクトリを testB ディレクトリの下に移動させると以下のようになり、ディレクトリ構造の不整合は発生しません。

root/
├ .svn/
├ testB/
│ └ testA/
│   ├ SampleA.as
│   └ SampleB.as
└ testC/

[ FLASH ] [ tips ] 投稿者 siratama : 2011年10月20日 15:32

トラックバック

http://www.dango-itimi.com/blog/mt-tb.cgi/1048

コメント

以下コメントを書き込むだけでは、管理人には通知が行われません。通知を行いたい場合、管理人の書き込みに「返信」を押してコメントをしていただくか、あるいは Google+, Twitter へご連絡ください。




[EDIT]