【问题标题】:Moving from ClearCase to Git从 ClearCase 迁移到 Git
【发布时间】:2010-08-18 09:34:35
【问题描述】:

我来自 ClearCase 背景,我们(简单地说)有一个由三个步骤组成的工作流程,其中最左边的主干不稳定,中间的主干是质量保证,最右边的主干是稳定的。即)

A  A  A
|  |  |
B  C  |
| /|  |
C  |  E
|  | /  
D  E
| /
E

如您所见,稳定的主干仅包含已合格的版本。我在 Git 中复制此工作流程时遇到问题,因为版本 B、C 和 D 也被推入 QA 主干,随后被推入稳定主干。在我看来,这违背了仅包含稳定版本的“干净”主干的目的。

现在 Git 和 ClearCase 之间存在明显的根本差异,我确信这可以解释为什么我在使用以前的概念来指定工作流时遇到问题。

几天来,我一直在尝试围绕这些新的 SCM 工具(我也研究过 Mercurial),确实可以就如何继续使用一些指示。我们在 Mac 和 Windows PC 上进行开发,与命令行相比,绝大多数团队更喜欢 GUI 工具。

谢谢! :-)

【问题讨论】:

    标签: git workflow clearcase


    【解决方案1】:

    首先你可以阅读这个comparison between ClearCase and Git

    正如Middle-ground between submodules and branches? 中所解释的,当您来自 ClearCase 时,可能会欺骗您的一个概念是组合的概念(配置继承):请参阅Flexible vs static branching (GIT vs Clearcase/Accurev)

    ClearCase 逐个文件(或逐个活动,每个活动是一组文件)工作。
    Git 逐个处理 blob delta(每个 blob 代表一个 内容:如果两个文件具有相同的内容,则只会存储一个“blob”)

    这意味着您通过分支/流和活动(如果您使用 UCM)在 ClearCase 中尝试做的事情,更有可能通过以下方式实现:

    • 提交重新排序(rebase --interactive,这是“git”方式,在 mercurial 中不推荐)
    • 和/或publication(这是分支的orthogonal dimension,特定于DVCS)

    重新排序 + 合并(仅适用于尚未“发布”的提交,即未推送):
    您正在重新排序应用于代码的修改增量,以便仅合并您想要的内容。

    trunk => trunk'  QA => QA'  stable
      A        B'    
      |        |  
      B        D'
      |        |  
      C        A'----A'    C''
      |        |     |     |
      D        C'    C'    A''--  A''  (--: merge to branch)
      |        |     |     |      |
      E        E     E     E      E
    
    • 重新排序 + 发布(推送):

    您还可以通过自己的 git 存储库来表示每个代码提升。
    一旦提交的顺序正确,您就可以将相关分支推送到 QA 存储库或稳定的存储库。


    重新排序(历史重写)是:

    另见:

    【讨论】:

    • 谢谢。习惯于 ClearCase 的这些替代工具一开始有点不知所措。希望他们能在适当的时候成为第二天性。 :-)
    • @MdaG:不客气 ;) 在相当长的一段时间内同时使用 CVCS(集中式 VCS)和 DVCS,我发现了解两者之间的区别很重要。见stackoverflow.com/questions/2704996/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 2010-10-26
    • 2010-11-05
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2011-02-21
    相关资源
    最近更新 更多