如何在多站点方案中提高CVS性能?
时间:2020-03-06 14:46:17 来源:igfitidea点击:
我目前正在一个项目中,开发人员在三个站点上工作。其中一个地点在印度的德里,而另外两个地点在欧洲。欧洲办事处和德里办事处之间的通信带宽较差,延迟也很差,即使只有很少的文件更改,从那里进行CVS更新也通常需要5到10分钟。
有没有很好的CVS代理,或者有任何巧妙的方法可以使单独的CVS服务器保持同步?我们是否还有其他技巧可以改善这种情况下的性能?
不幸的是,在这个项目的范围内,我们会陷入CVS的困境,因此在短期内切换到完全不同的东西是不可行的。
解决方案
为什么不切换选项?
我强烈建议改用SVN或者git。并且我们要尽快进行此转换...就像今天一样:)
甚至还有svn工具/指南和git工具/指南都可以为我们完成CVS转换。
我个人在工作中使用并喜欢SVN,但是根据上述描述,听起来git可能是我们更好的选择。
这是我很久以前在类似情况下(带宽和不可靠网络成为问题)所做的事情:
- 复制存储库并将其安装在远程位置。我们知道有CVS1和CVS2.
- 通过阻止提交来锁定两个副本(CVS1)之一。这是通过在CVSROOT模块中修改'commitinfo'来实现的。
- CVS1仅可用于更新
- CVS2可用于更新和提交
当我们想授予对副本1的提交访问权限时,请执行以下操作:
- 锁定CVS2
- 将CVS2复制到CVS1
- 解锁CVS1
这听起来很麻烦,但是如果我们手动进行,则可以。如果我们手动进行,则需要一点纪律。可能是时区一次在我们身边。
我写了一个工具来跟踪谁拥有提交令牌,并通过rsync和SSH自动将存储库从一个站点转移到另一个站点。它运行了好几年。我们从未丢失任何数据,大约花费了5分钟的时间将令牌从一个位置转移到另一个位置。
传输工具是用perl编写的,我花了大约两个星期的时间来开发它,并全职工作。
我知道FreeBSD开发人员很久以前就使用CVSup,但是我自己从未使用过该工具。