2012年3月14日水曜日

Subversionで作業コピー中のディレクトリのリネーム


チェックアウトした作業ディレクトリの中に、新たなSVN管理下のディレクトリfooを作る。
% svn mkdir foo
% svn commit -m ‘made foo’
次に、新たなディレクトリfooの中に新たなファイルをfoo.txt追加する。
% echo foo > foo/foo.txt
% svn add foo/foo.txt
% svn commit -m created foo.txt’
この状態で、作業コピーの中のfooをbarにリネーム。
% svn mv foo bar
そして、このリネームをコミットしようとすると…
% svn commit -m renamed
svn: Commit failed (details follow):
svn: Directory ‘xx/foo’ is out of date
怒られる。怒られてコミットできない。

結論から言うと、mvする前にupdateしておけば怒られない。
まず、コミットできなかったリネームは無かったことにしてから、アップデート。
% svn revert -R foo bar
% rm -fr bar
% svn update
それから再びリネーム。
% svn mv foo bar
% svn commit -m renamed
今度は通る。

要するに、何となくupdateしたら何とかなったのだけれど、そもそも駄目だった訳を理解していない。mvではなくcpなら問題は起こらないので、移動元の指定がおかしいことは無いと思うんだが…。
とりあえず対処療法的にupdateするか、mvするときはレポジトリのURLを指定しよう。

0 件のコメント:

コメントを投稿