打开命令行窗口,定位到项目得目录,也就是.svn文件所在的目录,运行如下命令:
svn relocate 旧的svn地址 新的svn地址
这时候会报错,一般是如下错误:

上面是用TortoiseSVN界面操作时报的错,意思是本地仓库的uuid跟服务器仓库的uuid不一致,前面的是服务器仓库的uuid。将其复制保存,然后关闭窗口。
uuid是仓库创建的时候生成的, 本地客户端也会拿它来对比是否是同一个svn仓库, 解决方法有两种:
- 重新checkout
相当于推到从来,如果本地没有新的代码可以用这种方法,如果有未提交的代码可就麻烦了 - 修改本地uuid
.svn文件下有一个wc.db文件,里面有一张REPOSITORY表,第一行就是uuid(一般是只有一条记录, 修改后会有两条)
接下来我们就来修改这个wc.db文件,我采用的工具是VSCode编辑器,安装SQLite插件,插件安装这里不做介绍,然后具体操作步骤如下:
快捷键ctrl+shift+p调出命令行,输入sqlite,在跳出的提示中选择Open Data in Explorer
,如下图

然后选择Choose another database

跳出文件选择器,找到要编辑的wc.db文件,打开

这样我们就打开了wc.db数据库,可以看到REPOSITORY表中的uuid列,如下

上面只是要看看sc.db的结构,其实可以跳过上面直接开始下面的操作,再次使用快捷键ctrl+shift+p
,在弹出框中输入sqlite
,然后选择New Query
,如下

然后我们就新建了一个sql文件,如下

注意:上图右下角箭头指向的区域,显示的是这个查询文件关联的数据库,这里关联的是wc.db,如果不是这个文件或者显示为空,那就点击,在弹出框中选择Choose Another Database
,在文件夹中找到要修改的wc.db文件选中。
我们来查看下REPOSITORY表,输入如下查询语句
select * from REPOSITORY;
选中代码右键运行

右边会跳出查询结果窗口,发现空空如也,不要慌,这可能是个bug

既然不让查看,那我就直接更改,输入如下代码
update REPOSITORY set uuid="这里输入之前保存的服务器仓库的uuid" where id=1;
选中代码,右键Run Query
运行,结果会跟刚才一样,空空如也,不过更改已经生效了
再次做最开始的操作,更换新仓库地址,命令如下
svn relocate 旧的svn地址 新的svn地址
这回显示更换成功,下图是ToroiseSVN的操作界面

网友评论