`

svn更换新仓库地址, 以及UUID不同的解决方式

    博客分类:
  • SVN
svn 
阅读更多

shell 命令:

svn relocate svn://svn_old svn://svn_new

一般会提示:

    svn: E195009: The repository at 'svn://svn_old' has uuid
    'bdbd6e13-965c-4da7-a4da-d4840425081e', but the WC has
    '9dcab4f9-d1ff-49d9-8b8d-a11efef133c1'

uuid是仓库创建的时候生成的, 本地客户端也会拿它来对比是否是同一个svn仓库, 解决方法有两种:
1: 重新checkout
文件太多, 我受不了

2: 修改本地uuid

sqlite3 .svn/wc.db
sqlite> select * from REPOSITORY; #一般是只有一条记录, 修改后会有两条
sqlite> update REPOSITORY set uuid="bdbd6e13-965c-4da7-a4da-d4840425081e" where id=1;
sqlite> .exit

svn update即可




svn服务器更换(二):
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时的下载时间。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics