最近在使用TortoiseSVN的时候,因为VisualSVN服务器的仓库地址发生了变化,需要对本地的仓库进行一下重定位(relocate),但是在进行这个操作的时候报了一个【svn The repository at svnxxxxx has uuid XXXX, but the WC has XXXX】这样的错误,如果是中文版TortoiseSVN会提示如下信息:

svn重新定位后UUID客户端和服务器不一致的问题-风君子博客

版本库 "https://RDServer:8443/svn/finance/" 的 uuid是 "3163c7ff-81f2-6645-ae17-932cea02b3d1",但工作副本的是"d0d64f1f-4619-2248-8bce-687ab998f712",如上图所示

注:以上的UUID在服务端是可以查看并直接复制的

打开VisualSVN Server Manager页面,在中找到相应的repository,右键查看【Propertity】,然后在Details标签页中可以看到这个仓库的uuid了,这里的uuid是可以直接复制的。

svn重新定位后UUID客户端和服务器不一致的问题-风君子博客

出现这个问题的原因就是SVN服务器上仓库的uuid和我们本地仓库中的uuid不一致引起的。uuid是SVN服务器在创建仓库时自动生成的一个随机数,通过这个随机数用来判断服务器和客户端的仓库是否一致,如果不一致,就会引起冲突。

 

需要用到svnadmin命令:(位于 SVN安装目录下面的bin目录)

注:这个命令需要在SVN服务器上执行,该命令使用cmd命令行窗口使用。

1.找到svn服务器,然后找到VisualSVN Server的安装目录下的bin文件夹,将其路径拷贝
比如C:\Program Files\VisualSVN Server\bin
2.打开cmd命令,输入cd 刚才拷贝的bin文件夹的路径,回车,然后就可以使用svnadmin命令了。

svnadmin setuuid <repos_path> <uuid>

 注:<repos_path> 是你的SVN中这个项目所在的路径,比如C:\svn\Repositories\xxxx <uuid>就是你想要设置的新的UUID

你可以使用它来设置UUID。

使用svnadmin setuuid命令更新Repository的uuid.

解决办法如下:
1.首先查看项目的所有者的uuid
svnlook uuid  https://RDServer:8443/svn/finance/
42b86956-73d9-2945-ba87-0546d71898f5

2.更新项目的uuid
svnadmin setuuid   https://RDServer:8443/svn/finance/ 7aed1349-fe9f-9245-a4a0-02dba53eb2d3

3.查看一下更新uuid的结果
svnlook uuid  https://RDServer:8443/svn/finance/

7aed1349-fe9f-9245-a4a0-02dba53eb2d3