十多年来,我们拥有一个非常庞大的传统CVS回购(66GiB)并且不断增加.现在我们有一些分包合同公司,需要在一些模块和分支机构上工作.
我们需要为它们创建一些分支并将它们发送给它们.我们还需要不时将他们的更改合并到我们的主要分支中.
我们关注的是:
我们绝对不能给他们整个回购,主要是关注安全.
我们需要向他们发送一些历史信息,而不仅仅是"HEAD"版本的代码.
我们仍在进行一些开发工作,因此我们需要不时向他们发送变更集.
GIT和Mercurial是从CVS迁移的好选择吗?GIT/Mercurial可以满足我们的需求吗?
编辑:我认为我们实际上需要一个具有多站点功能的集中式版本控制,能够根据中央仓库的一部分创建场外回购.并且可以轻松地在站点之间合并.
使用Git,您可以使用该git subtree命令"剪切"您可以提供给分包商的子目录,然后轻松地将其更改重新集成到主线中.如果需要,您还可以定期向他们提供更新.该git subtree命令是原始的附加组件,但已经滚动到contrib官方Git发行版的目录中.
可以限制您在为外部用户提供的存储库中包含的历史记录数量.
不过,我预计你最大的担忧是转向拥有如此庞大的首发回购的DVCS.Git会压缩你的repo,所以当你完成它时它不太可能是66 GB,但它仍然相当笨重(可能大约10 GB,具体取决于你在那里存储的内容).如果你不认为这是一个问题,那就去吧.
我限制了我对Git的回答,因为我对Git比Mercurial更熟悉.