与 ClearCase 相比如何使用 git 元数据策略?

How to use git metadata strategies compared to ClearCase ones?

在我以前的开发人员生涯中,clearcase 是 10 多年的版本控制工具。现在我工作的组织已经转移到 git 4 年了。在 clearcase 中,有易于访问的元数据结构,例如所有级别的项目属性,如存储库或分支或标签。 git 注释存在,但经过一些网上冲浪后,我还没有找到任何有效地执行此操作的明确好方法以及原因。例如,UCM ClearCase 基线提升级别是一个很好的概念,我希望它在 git 中变得简单。

我针对这个特定问题所代表的开发社区统计数据:< 100 个开发人员,< 5 个主要发布分支,< 100 个客户补丁分支,代码库大小:< 1000000 行代码。

因此需要一些适当的元数据策略和工具。

在 clearcase 中存在以下元数据结构:

特别是:

我确认,在使用 ClearCase 10 多年和 git 7 多年之后,git 是关于简单的元数据:标记、分支、blob、提交、日期、作者、执行位,...差不多就是这样。
任何额外的 属性 将由 git 个注释管理。

您可以在我的旧答案“What are the basic ClearCase concepts every developer should know?”中看到 Git 与 ClearCase 的比较。

任何版本管理类型的元数据都通过以下方式进行管理:

  • 合并工作流(和 branch strategy). git-flow is the most famous one, but certainly not the only one
  • 发布工作流程,您在其中管理同一存储库的多个实例(在 git 使用的分布式模型中,一个存储库可以而且应该被克隆)。
    您可以推送到触发测试的 QA 仓库,然后推送到仅接受 "valid" 提交的 blessed 仓库(这意味着您知道代码编译并通过测试)。
    这是一种“受保护的提交”方法,使用了, or code review.

不要忘记,在分布式模型中,您还有其他设计不可用的元数据:与身份验证或授权相关的任何内容都已消失,正如我在“Distributed Version Control Systems and the Enterprise - a Good mix?”中详述的那样。


  • 标签:这些是用git标签完成的(对于所有回购)
  • attributes:由 git notes 管理,或使用专用分支或专用 repos。
  • UCM baselines: 再次标签(如果你想将它们与常规标签区分开来,请使用命名约定)
  • 超链接:git 中不需要(标签引用没有任何中间的提交 "hyperlink")。合并被记忆为 "merge commit" 和两个父提交,这清楚地表明了合并的含义。
    由于 git 中没有 parent/children 流(仅分支),因此您没有相同的 "deliver/rebase" 语义。

记住:在 git 中,repo 类似于 UCM 组件。