如何在多站点场景中提高CVS性能?

问题描述:

我目前正在与三个站点上的开发人员合作开发一个项目。其中一个遗址位于印度德里,另外两个位于欧洲。欧洲办事处与德里办事处之间的沟通带宽很差,延迟也很差,而且从那里的CVS更新通常需要5-10分钟,即使只有少数文件发生了变化。如何在多站点场景中提高CVS性能?

是否有任何优秀的CVS代理或保持单独的CVS服务器同步的简洁方法?在这种情况下,您是否有任何其他提示可以改进性能?

不幸的是,我们将在该项目的范围内被CVS卡住,所以在短期内切换到完全不同的东西不是一种选择。

为什么不切换选项?

我强烈建议切换到SVN或git。并且你尽快做这种转换...就像今天:)

甚至还有svn tools/guidesgit tools/guides在那里会为你做这个CVS转换。

我个人对我的工作使用并热爱SVN,但基于上面的描述,这听起来像git可能是更好的选择。

+0

我们一定会切换!但是,考虑到组织规模(> 200人)以及相当多的依靠CVS的自动工具和程序,我想这需要几个月的时间才能使变更生效。我们需要一些时间来计划,并说服经理人。 =) – SteinNorheim 2008-09-26 08:32:55

以下是我已经在类似情况下很久以前完成时的带宽和不可靠的网络是一个问题:

  • 使仓库的副本,并在远程位置安装。你知道有CVS1和CVS2。
  • 通过阻止提交来锁定两个副本(CVS1)中的一个。这是通过修改CVSROOT模块中的'commitinfo'来实现的。
  • CVS1可用于只更新
  • CVS2可用于更新和提交

当你想给访问中承诺要复制1,步骤如下:

  • 锁CVS2
  • 复制CVS2到CVS1
  • 解锁CVS1

这听起来很麻烦,而且这是如果你手动做,但它的工作原理。如果你手动操作,它需要一点纪律。可能是时区在你身边一次。

我编写了一个工具来跟踪谁拥有提交令牌并通过rsync和SSH自动将存储库从一个站点传输到另一个站点。它很好地工作了几年。我们从未丢失任何数据,并且花费了大约5分钟将令牌从一个位置转移到另一个位置。

传输工具是用perl编写的,花了我大约两周的时间来开发它,全天候工作。

我知道很久以前FreeBSD开发人员使用CVSup,但我从来没有使用过这个工具。