svn服务器更换了,本地的项目需要更改配置。可以重新再check out出来一份。但这样并不是必要的,本地其实已经有一份代码了,为什么还非得重新下载一份呢。可以使用svn relocate命令更改本地项目的respository。
svn switch --relocate http://cms/svn/cms http://172.20.16.230/svn/java/
出现错误:
svn: E195009: 版本库 “http://172.20.16.230/svn/java/trunk/......” 的 uuid 是 “26a2186b-f2b0-4896-a26b-377849fce918”,但是工作副本的是 “9428d3a9-ad39-c145-acea-0b45b3c4f14d”
UUID是respository创建时自动生成的一个随机数,SVN Client利用UUID判断是否为同一个resp。一般遇到UUID不同时,需要重新Checkout。或者可以修改服务器上的UUID:
$ svnlook uuid /var/svn/repos
cf2b9d22-acb5-11dc-bc8c-05e83ce5dbec
$ svnadmin setuuid /var/svn/repos # generate a new UUID 自动生成
$ svnlook uuid /var/svn/repos
3c3c38fe-acc0-11dc-acbc-1b37ff1c8e7c
$ svnadmin setuuid /var/svn/repos \
cf2b9d22-acb5-11dc-bc8c-05e83ce5dbec # restore the old UUID 手动指定
$ svnlook uuid /var/svn/repos
cf2b9d22-acb5-11dc-bc8c-05e83ce5dbec
可现在的情况是,已经有很多组员从新svn服务器上check out出新的代码了,现在貌似就自己的uuid 不一样了。也可以修改本地的uuid,有资料说是修改
.svn/entries文件。现在svn的版本是1.7,最后找到在.svn/wc.db文件中进行修改,然后就可以顺利svn relocate了。
但之后update的时候报错,说本地的revision在服务器上找不到,本地的版本号都是3000多了,而svn服务器上的才50多,看来svn迁移后历史信息丢掉了。这时的解决方法,就是将本地.svn文件夹删除,从其他人机器上复制一份.svn文件夹,然后就可以。看来我又转回来了,只是省了checkout时的下载时间。