【问题标题】:git - handling many similar-yet-slightly-different applications?git - 处理许多相似但略有不同的应用程序?
【发布时间】:2015-04-07 07:12:14
【问题描述】:

我目前在一家公司工作,该公司使用 Rational/IBM ClearCase 来满足其大量源代码控制需求,并且一直在研究(当然,主要是在我的空闲时间)我们是否可以/如何迁移到 git in未来。

作为背景:我们在 ClearCase 中的许多项目都源自一个通用的“基础”系统,然后我们根据需要对其进行分支。大多数应用程序一开始都是严格基础的,但客户需求要求我们在其中分支文件,从而产生两个版本:一个基础版本,一个客户端特定版本。由于客户特定版本有自己的标签,因此每个应用程序都可以相互独立地发展。由于标签贴在每个更改文件的某个版本上,我们不必担心基数的更改会破坏客户的事情(因为它们将处于不同的修订版,直到有人进入并移动标签)。我们还通过标签跟踪代码的状态(发送给 QA、等待客户反馈、生产中)。

据我所知,我会为“基本”版本创建一个新的存储库并使用标签来定义状态,但处理特定于客户的版本确实让我感到困惑。我是否需要为客户端创建一个全新的存储库并在基本版本和客户端版本之间手动移动更改,还是有更好的方法?使用标签是处理描述哪些修订与特定客户一起使用的最佳方式,还是我遗漏了什么?我已经看到一些子模块的提及,但据我所知,它主要用于处理与应用程序相关的代码,而不是基本上大片相同的代码?

我的问题可能会泄露出去,但我所有的 git 经验都是针对个人项目使用 git 的。当您处理新建项目时(相对)容易理解行为,而不是当您尝试将新工具强加于现有工作流程时。

如果您有任何见解,我将不胜感激,并感谢您抽出宝贵时间阅读我的问题!

【问题讨论】:

    标签: git migration clearcase


    【解决方案1】:

    根据您的描述,Git 非常适合处理您公司的用例。您将基于现有的“基本”系统创建一个新的 Git 存储库。这个“基础”系统将对应于 Git 中的 master 分支。对于每个客户版本,您可以创建一个新的 Git 分支。分支是 Git 真正击败几乎所有其他版本控制系统的领域,因为它可以非常快速地创建新分支,同时只需要很少的存储空间。请注意,您不必为每个客户分支初始化一个新的 Git 存储库。

    如果您需要在主分支(“基础”)和任何客户分支之间移动特定功能,您可以使用git mergegit rebase 甚至git cherry-pick 来实现。 Git rebase 允许您在将功能分支带回主分支时维护它的整个历史记录。如果您需要仔细保留为每位客户添加的每项功能的详细信息,这对您的组织可能非常有价值。

    这个问题其实已经在Stack Overflow already上讨论过了。

    【讨论】:

    • 当客户调整只是在一个单独的分支上进行时,为什么要创建一个新的?不要忘记提及git merge,这是合并分支之间的更改的默认选择。
    • 对不起,那应该是“为什么要在...时创建一个新的存储库”。啊,“合并变化”显然应该是“合并变化”。
    猜你喜欢
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 2017-11-21
    相关资源
    最近更新 更多