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

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时的下载时间。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值