svn レポジトリの参照先を変える方法

2009年7月6日追記: 以下は svn switch あるいは svn switch --relocate が使えない場合の話です。

Subversion のレポジトリが移行したときに、手元に co してあるソースをそのまま、レポジトリの URL だけを書き換えたいことって結構ある。
#運用サーバへのデプロイが svn co だったりすると

で、.svn/entries を書き換えるって手もあるらしいけど、なんかうまく行かなかったので、.svn ディレクトリを新しいレポジトリから取ってきたやつに差し替える方法で対処。以下手順。

% svn co http://new-repo /tmp/new-repo
% (cd cur-repo && find . -name .svn -type d) > /tmp/cur-repo.dotsvn
% (cd /tmp/new-repo && find . -name .svn -type d) > /tmp/new-repo.dotsvn
% diff -u /tmp/cur-repo.dotsvn /tmp/new-repo.dotsvn
% (cd cur-repo && rm -r `cat /tmp/cur-repo.dotsvn`)
% (cd /tmp/new-repo && tar cf - `cat /tmp/new-repo.svn`) | (cd cur-repo && tar xf -)

diff とってるのは、ディレクトリ構成が変化してないことを確認するため。