Keep on going, never give up.

VisualSVN备份与跨版本库迁移方法

本文验证是在Windows Visual SVN下面进行,svn命令在svn客户端端执行,svnadmin、svnserver和svndumpfilter命令在svn服务端执行,Windows上可打开命令行终端执行。

一、如果svnadmin命令无法识别

如果没有SVNADMIN命令,需要把下面路径加入环境变量:

C:\Program Files\VisualSVN Server\bin

二、备份svn存储库

#压缩后备份

svnadmin dump F:\Repositories\Mycode | gzip > F:\BackUp\Mycode.gz

#不压缩备份

svnadmin dump F:\Repositories\Mycode > F:\BackUp\Mycode.svn

三、恢复svn存储库

#建立新的svn存储库(此目录需手动创建或提前创建,否则下面导入会失败)

svnadmin create F:\Newrepositories\Mycode

#导入存储库数据(将会导入到F:\Newrepositories\Mycode下)

svnadmin load F:\Newrepositories < F:\BackUp\Mycode.svn

#(如果)导入版本库下级目录(示例导入F:\Newrepositories\Sources\Mycode目录下)

svnadmin load F:\Newrepositories\Sources --parent-dir Mycode  < F:\BackUp\Mycode.svn


四、更新UUID问题

修改路径后,再次COMMIT前需要先RELOCATE一次,不过TortoiseSVN常常会报告如下错误:

Command Update
Repository uuid '.................' doesn't match expected uuid '....................'
Finished!

uuid是repository创建时自动生成的随机数,SVN Client通过uuid判断是否为同一个resp,新的目录移动后uuid就会变化,此时,只要确保是同一份档案,即可通过修改UUID方法解决。

解决办法如下:

1.查看项目的所有者uuid

svnlook uuid /var/svn/repos
8888888888-8888-8888-8888-88888888888

2.更新项目的uuid

svnadmin setuuid /var/svn/repos 99999999999-9999-9999-9999-99999999999

3.查看更新uuid结果

svnlook uuid /var/svn/repos 
99999999999-9999-9999-9999-99999999999

五、目录权限设置

1、实现不同人访问不同目录

比如存储库/Repository下有/Docs/Tom和/Docs/John两个目录,如果只想Tom和John访问彼此目录而看不到对方目录,那么Docs可设置为Everyone可读,但Tom目录设置为Everyone不可读,但Tom可读写,John则设置Everyone不可读,但John可读写,即可达到目的。

2、实现管理员同时可读取Docs目录

此时Docs设置Everyone只读,但Admin可读写,在Tom目录则需要修改Admin不要继承,修改为可读写,John目录同样设置,这样Admin则同时读写Tom和John目录。如果在Tom和John使用继承,则因为1步骤中设置了Everyone不可读,导致Admin也无法读。

当然,如果没有在子目录中设置Everyone不可读,则Admin可默认使用继承权限。

参考资料:

http://www.cnblogs.com/lidabo/p/4633152.html

http://blog.csdn.net/tianshijianbing1989/article/details/41980675

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.