在自己本机上装上VisualSVN,对自己的程序做个版本管理,刚开始也没怎么注意,老是新建版本库,建的多了,发现乱得一踏糊涂,就想把几个库里的代码放到一个库里,我的操作系统是WIN7,VisualSNV界面上怎么都找不到更改库名啊,转移库的操作,上网搜,多半是用命令完成的,那没办法,用命令吧。
然后看到一篇文章,http://blog.csdn.net/tianshijianbing1989/article/details/41980675,写得正是我需要的,于是参考着做。
我的库原来的情况是这样,很乱是吧,我想做的,就是把fms\FMS、meiyesystem\ctsms、trvalcard\LYNP统统移到新建的库yesrj下。
上面提到的文章作者有说:本来打算用svn move来做的,后来发现因为是不同的版本库,所以这个想法被淘汰了。我想说我是同一版本库啊,我可以用这个命令啊,这个简单啊,于是我就执行下面的命令:(svn命令是没有加入到path中去的,可以通过cmd进入到svn命令所在位置执行,具体位置查找方法下面有介绍。)
svn move F:\Repositories\fms\FMS F:\Repositories\yesrj\FMS
可是执行不成功啊,一直提示svn:E155007:'F:\Repositories\fms\FMS' is not a working copy
我做了多种尝试,网上搜了很多资料,终不得解,所以最终只好放弃了。
还是按照上面文章中所说的方法,一步一步导出导入吧。下在是我详细的操作步骤:
1、怎么找svn命令位置
右键你的VisualSVN快捷方式,看属性,看位置,我的是:C:\Windows\SysWOW64\mmc.exe /32 "C:\Program Files (x86)\VisualSVN Server\bin\VisualSVN Server.msc",svn命令工具都在C:\Program Files (x86)\VisualSVN Server\bin\这个文件夹下。
2、怎么找库目录位置
上面的目录向上一层,进入conf目录,即:C:\Program Files (x86)\VisualSVN Server\conf,编辑httpd.conf,查找SVNParentPath,它后面的目录就是库目录位置,我的库目录在F:\Repositories。
3、导出原来库中代码
svnadmin dump F:\Repositories\fms > f1
4、我只导出里面的FMS文件夹,所以,执行下面的命令过滤
svndumpfilter include FMS < f1 > f2
5、导入到新建的库yesrj中
svnadmin load F:\Repositories\yesrj < f2
这里其实可以加个参数:--parent-dir dirName,也就是
svnadmin load F:\Repositories\yesrj --parent-dir dirName < f2
用这个命令可以将导入的文件放到这个新库指定的文件夹下,我不新建文件夹,所以不加这个参数,直接放到根目录下这个命令
我执行时跑得太快,没截下来前面的图,大概执行起来的样子:
6、执行完毕,FMS已经复制到yesrj下了,包含了所有的版本信息,删除原来的FMS就行了。
后续的操作都一样,不再一一缀述了
7、然后去客户端重新定位资源库位置(我用的是eclipse)
发现出现了这样的问题:
switch --relocate https://workpc/svn/trvalcard https://workpc/svn/yesrj E:/WORKSPACE/PROJECT/LYNP
Inter-repository relocation not allowed
svn: The repository at 'https://workpc/svn/yesrj/LYNP' has uuid '62a7bfaa-0740-ed4e-88e4-e97b672929bc', but the WC has '5cc451eb-02fb-464f-a7d7-e2c2cf88a41d'
这时候,参考另一文章:
http://blog.csdn.net/callmeado/article/details/50813974
执行命令:
svnadmin setuuid F:\Repositories\yesrj\LYNP 5cc451eb-02fb-464f-a7d7-e2c2cf88a41d
然后再定位就OK了,但也牵涉一个问题,从其他库里引过来的都要改,只有一个uuid,肯定不能附合全部的更改目录,可以参照文章里客户端的方法。