使用Git与ClearCase、AccuRev或Perforce的价值是什么?

10

我对在大型项目中,使用传统的软件配置管理产品(ClearCase、AccuRev、Perforce等)以及Git与分布式团队合作的价值(或缺乏价值)感兴趣。

在增加团队活动的可见性方面,控制分支和合并方面,访问控制和安全方面,发布工程方面或其他因素方面有显著的附加价值吗?

还是仅使用Git更好?或者是否有一个开源的软件配置管理工具,可以与上述商业产品相当?

谢谢。


除非你发明了某种魔法系统来将本地日志消息推送到CC/SVN/Perforce等中心化系统,否则同步Git到你的中心化系统时会丢失历史记录,这似乎很糟糕。(而且,为什么你想要这样做呢?) - Nick Bastin
3个回答

6

尽可能少使用系统。如果您认为除了git之外没有任何优势,那么就只使用git。

大多数项目仅使用一个版本控制系统(例如git或Subversion),并且可以完成所需的所有操作(分支等)。因此,除非您知道某些不寻常的要求,否则可以相当确定一个产品将满足您的所有需求。


2
目前我并不打算将Git与ClearCase或SVN集成在一起,主要是因为Git仓库无法保留与传统集中式仓库相同类型的数据(二进制文件)或数量/大小(文件数)
请参见“Git限制是什么?”。

我正在尝试在企业ClearCase-SVN环境中推广Git作为独立的替代方案。

虽然速度、私有提交和合并功能非常受欢迎,但我需要解决以下实际问题:

  • 集中化:仍需要中央存储库,以便许多团队将其代码同步到该存储库以进行参考。
  • 模块化:无法创建一个Vob(ClearCase)或一个Subversion存储库并开始将所有内容放入其中。每个git存储库都需要更细粒度,以便在标记或分支时添加一致的价值(这些操作涉及整个Git存储库,而不是该存储库中的子目录)。
  • 身份验证:每个用户都在LDAP中引用,并且我需要提供prereceive钩子,以至少进行一次提交并使用正确的user.name配置(即与我们公司LDAP中的通用名称cn相等的user.name)。 (有点像gitolite脚本'contrib/update.email-check',但是针对的是user.name,而不是电子邮件)。
  • 正确的访问权限gitolite在这里非常有帮助,可以为这些中央仓库获取非常精确的ACL。但是,使用ssh私钥/公钥也意味着必须具有带有密码短语的私钥(根据我们的安全团队要求),这与Hudson或其他工具的集成并不容易。

总之,我仍然认为Git更好,但由于我负责实施其安装/管理,我完全同意我之前在SO问题“企业软件中是否可以最终转向DVCS? SVN对于开发仍然是“必须拥有”的吗?”中所做的分析。;)。


现在有了“智能”HTTP协议,是否可以通过HTTP完成身份验证?这意味着您可以将Subversion上使用的任何身份验证层重用到Git上。 - araqnid
@araqnid:好的。目前,我使用ssh方法与gitolite一起使用,但我也会测试智能http协议,遵循http://progit.org/2010/03/04/smart-http.html的演示和评论。 - VonC

1

有价值的内容。

  1. 利用本地分支的灵活性和便利性,促进开发人员在本地(机器)环境中的工作流程,使用集中式系统轻松控制基于角色的权限和大量文件的聚合。

  2. 开发人员任务分支保留在分布式系统中,使得集中式历史记录更加清晰。

  3. 可以使用集中式系统将大型二进制资产从分布式系统卸载。

有成本。

  1. 支持/培训混合环境。

  2. 需要定位/维护系统之间的翻译层。


你还会失去历史记录,这似乎很糟糕。 - Nick Bastin
“历史丢失是不好的”这个观念正在发生变化。例如,rebase 是 git 的一个强大且受欢迎的功能,它可以重写(丢失)历史记录。请注意,在向集中式系统推送时,并不总是会“丢失”本地历史记录- 它通常仍然保留在分布式系统中。不同的是,所有历史记录并非都集中存储- 而且已经演变的是,其中一些历史记录并非被普遍认为对于中央系统很重要。 - James Creasy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接