我们一直致力于一个每个人都在干线上工作的项目。该项目已达到我们的开发团队不断发展的程度,我们终于开始做客户发布(所有好东西)。因此,为了帮助协调所有这些,我们开始遵循SVN分支/合并等最佳实践。
我们面临的问题是合并时间超过20分钟,并且经常因“对等连接重置”或“PROPFIND”错误而失败。分支和合并只是一种痛苦,它们几乎无法使用。我们只有大约1000个文件,而且我们经常合并少于20个文件,但仍需要20分钟。我们正在使用Apache访问SVN。
我的问题是,这是典型的,还是我们配置错了?你的SVN存储库有多大,合并需要多长时间?
编辑:通过互联网访问服务器,我们有一些相当大的二进制文件,我们使用Mac,Linux和Windows客户端。我们不知道没有互联网或网络问题。
答案 0 :(得分:10)
这是由于Apache,请参阅Stack Overflow问题“Svnserve VS mod_dav_svn”。
概括说明:
似乎鲜为人知的是,所使用的服务器变体的选择--Apache Subversion mod_dav_svn模块或独立的svnserve服务器 - 对测量和感知的颠覆性能有很大影响。通常svnserve比Apache mod_dav_svn快得多 ............... 在针对mod_dav_svn服务器的svn log和svn合并操作期间测量了最显着的性能损失 - 如果例如,您将立即注意到svn日志性能更差。使用Eclipse Subversion插件Subclipse。
答案 1 :(得分:5)
完全披露:我和Larf一起工作,我会告诉他不要将我的答案标记为已选中,这样看起来我们不会以某种方式设置游戏系统。我当然喜欢你的赞成票:)
我们最近尝试了一些可能加速的工作,我想在Stack Overflow上捕获它。我不确定它是否适合你,但看起来它对我们有用。
虽然所有这些都可能完全正常,但它们肯定听起来不像我预期的那样。
Larf创建了一个dev分支,然后几天后尝试将主干合并到他的分支中。以前,这种类型的合并似乎在开始合并之前停止了13+分钟。现在,它几乎立即开始并在< 4分钟。
在将代码合并到其他较旧的分支方面(因为我们删除了svn:mergeinfo),我们可能已经开枪了,但这种情况很少发生,我们愿意承担改善dev分支合并时间的风险(和所有分支都在前进)。此外,我们目前正在进行月度发布/分支,因此下一个将在其上设置正确的svn:mergeinfo属性。
答案 2 :(得分:3)
这是一个网络问题而不是颠覆问题本身。我曾经有过它,不记得我做了什么来解决它,但快速的谷歌搜索表明它并不罕见。有些事要检查:
我假设你可以毫无问题地svn ls
和普通svn co
。
答案 3 :(得分:2)
你的文件有多大?二进制还是文字?大二进制文件会在服务器上产生大量负载。
此外,“通过对等方重置连接”表示服务器端出现了问题。你检查过服务器的负载,检查日志是否有错误?
您是否遇到其他网络应用程序(浏览器,访问网络共享)的问题?这表明网络本身存在问题。
我正在访问 Internet 上的服务器上的大型存储库(> 100'000个文件),更新最多只需几分钟!不过那是在Linux上。在本地收集文件不是Windows的优势......
[编辑]您的问题是大型二进制文件。在尝试生成xdelta时,服务器可能耗尽了处理时间或内存。我建议你阅读这篇文章:Performance tuning Subversion
答案 4 :(得分:1)
我们拥有超过一千个文件,并且始终将大量已更改的文件与冲突合并。我从来没有真正计划合并,但如果花了超过几分钟,我会感到惊讶。也许是时候开一些热水了,但还不足以制作一杯好茶!
我们的存储库位于您的客户端计算机的哪个位置?您是否能够排除任何其他连接问题?
另外,我可能应该补充一点,我们通过SSH使用svnserve。我们一直认为,通过使用Apache来访问SVN而不是SSH,我们可以加快速度。也许我们错了!
答案 5 :(得分:1)
可能需要获取存储库的副本并使用svnserve进行快速测试,以确定它是否更快。它可能不是一个适合您的解决方案,但它可能表明瓶颈在哪里。
使用1.5时,合并需要获取所有内容的svn:mergeinfo属性 - 这是每个文件的另一个Web调用,而apache服务从来都不知道做得快。
我们使用svnserve,svn ls -R刚刚在大约40个项目中返回了600,000多个文件。我从来没有注意到合并特别慢。
答案 6 :(得分:1)
当我们在Subversion中存储了大量二进制文件(大小为25 MB +大小)时,我们遇到了类似的问题。我们在Apache服务停止/启动后观察到的情况,性能立即得到改善,然后在接下来的一周内缓慢下降。所以我们编写了一个脚本,它每天都会停止/启动一次Apache服务。这显着改善了事情。
我不确定这是否是您面临的问题的正确解决方案。但可能值得一试。
答案 7 :(得分:1)
这是集中模型最终会遇到的问题,也是BitKeeper,Git,Bzr和Mercurial等系统背后的激励因素之一。