如何在多站点方案中提高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,但是我自己从未使用过该工具。