Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1065050
  • 博文数量: 77
  • 博客积分: 11498
  • 博客等级: 上将
  • 技术积分: 1840
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-04 11:10
文章分类

全部博文(77)

文章存档

2011年(1)

2010年(16)

2009年(5)

2008年(55)

分类: 项目管理

2010-04-09 00:12:05

当你使用一个状况不佳的网络时,访问互联网上的SVN版本库是一件极其痛苦的事情。此时,可以考虑为远程版本库做一个本地镜像。然后,所有操作都在本地的版本库上进行,在空闲时进行两个版本库之间的同步。幸运的是,SVN已经提供了相应的功能。

第一步,在本地建立一个新的版本库:
    svnadmin create D:\test

第二步,创建钩子文件pre-revprop-change.bat(windows环境,这里是D:\test\hooks\pre-revprop-change.bat)。文件中只需要一行内容即可“exit 0”。

第三步,初始化镜像(同步)操作:
    svnsync init file:///D:/test
(如果需要用户名/密码,则按提示输入)

第四步,执行镜像(同步)操作:
    svnsync sync file:///D:/test
(如果需要用户名/密码,则按提示输入)



Update (2010-04-10):

1. 如果在同步过程中出现了网络中断等异常,可能会引起同步中止。当下次重新同步时,会提示错误“svnsync: Couldn't get lock on destination repos after 10 attempts”。此时手动删除锁:
    svn propdel svn:sync-lock --revprop -r0 file:///D:/test


Update (2010-04-11):

1. 在镜像某个SVN源时,遇到错误“svnsync: 不能接受属性 “svn:log”,因为它的编码不是 UTF-8”。原因是,从SVN1.6开始,SVN强制要求log等信息用UTF-8编码,而在1.6之前这不是强制的。因此,有些SVN源可能使用了其它编码。此时,当使用SVN1.6+来镜像这些源时就会遇到前面的错误。目前还没有找到解决办法。只好把SVN降低到1.5,此时,这个问题暂时被绕过了。但又遇到了新问题(如下)。

2. 在使用SVN1.5.7进行同步时,在同步了百个左右的版本时会遇到错误“svnsync: 方法 PROPFIND 失败于 “/svn/ntop”: SSL negotiation failed: SSL error: parse tlsext ()”。遇到错误后,再次执行svnsync命令时,能够继续进行。但运行一段时间后,又会重复遇到这个错误。目前不知道如何解决,但有一个绕过的方法:写一个简单的脚本,执行svnsync命令,如果命令执行失败,则重新执行,直到执行成功。

阅读(1671) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~