看来Subversionconfiguration的一些胖手指可能导致Subversion镜像被破坏。 详细信息:我们有一套托pipe在主服务器上的Subversion版本库,然后使用snvsync镜像到两个离线服务器。 所有事务都是使用HTTPS完成的,所以在所有三台服务器上都configuration了Apache,以允许HTTPS访问主服务器和镜像服务器。 上周五,我在主服务器上build立了一个新的存储库,但是在新的repo的Apacheconfiguration中,我将SVNPath设置为与现有的存储库相同。 几个小时后,我修复了这个错误。 我不完全确定我现在看到的错误是由于错字,还是只是巧合,但无论原因,实际拥有该SVNPath在svnsync尝试期间报告错误的存储库,现在是两个镜像之一该存储库至less有一个丢失的文件。 这是我现在试图在镜像上执行svnsync时得到的消息:
svnsync: '/Repo-proxy-sync/path/to/missing/file/MissingFile.pm' path not found
检查镜像的最新修订版确认该文件不存在。 缺less的文件首先在主存储库的修订版本#16166中提交。 回顾一下svnsync日志,看起来那个版本已经被完整地提交给了镜像(在创build新的版本库之前):
Fri Aug 21 06:03:20 CDT 2015 Committed revision 16166. Copied properties for revision 16166.
上午8点之后,有一些错误开始发生。 我也怀疑我重新启动Apache来应用新的configuration可能是一个因素。 我在整天看到的错误中有一条是关于#16166修订版的。
Fri Aug 21 08:01:58 CDT 2015 svnsync: Server sent unexpected return value (500 Internal Server Error) in response to OPTIONS request for 'http://master-ip/Repo' Fri Aug 21 09:00:02 CDT 2015 svnsync: Server sent unexpected return value (500 Internal Server Error) in response to PROPFIND request for '/Repo/!svn/bln/16166' Fri Aug 21 10:00:01 CDT 2015 svnsync: Server sent unexpected return value (500 Internal Server Error) in response to PROPFIND request for '/Repo' Fri Aug 21 14:00:01 CDT 2015 svnsync: Server sent unexpected return value (500 Internal Server Error) in response to OPTIONS request for 'http://master-ip/Repo'
尽pipe存在错误,但是主存储库似乎没有问题; 我在最新版本上运行了“svnadmin verify”,其中包括在创build其他版本库之前以及在修改其configuration文件之后所做的几个修订版本。 一切都很干净。 第二个非现场镜像没有遇到同步受影响的存储库的任何问题,目前有最新的修订,没有丢失的文件。
现在这个坏镜子正在修改#16168。 是否有可能强制镜像回几个修订,也许到#16165,然后让同步进度再次? 或者我将不得不从头重build镜像?
我采取了全面重build的镜子。 在世界各地的一半以上的16,000次提交并不是一个愉快的经历,但至less这是一个可行的解决scheme。 感谢所有读者!