【问题标题】:Git - Models with composition and branchesGit - 具有组合和分支的模型
【发布时间】:2014-12-24 09:17:03
【问题描述】:

根据@nvie的definition of feature branch,我认为一个项目的每个类都应该是一个特性分支。

例如:

git checkout -b car develop
git checkout -b wheel develop
git checkout -b engine develop

并且在每个分支中,我定义了与正确命名的类相关的类的实现,例如wheelwheel_daowheel_composite

在这种情况下,carwheelengine 的所有者。所以我想将wheelengine 分支合并到汽车中是正确的。

W---\
     \
------C
     /
E---/

但是我发现这可能很糟糕,因为enginewheel 仍然会获得新的提交,所以每次将提交添加到这些分支时,我都会再次将其合并到car .

我希望您与我分享一篇文章,我可以在其中找到有关将 git 与模型一起使用的更多信息(也许是 MVC?)。或者也许你们可以告诉我一个更合适的方法来分支一个组合。

【问题讨论】:

  • 我认为您错误地假设类等于特征。尽管在实现新功能时通常会创建新类,但新类在提供新功能之前并不构成功能。当您遇到需要多个类来解决的更复杂的案例时,您的模型确实存在缺陷 - 这意味着在处理同一问题时不断切换分支和变基。

标签: git model-view-controller git-branch git-flow


【解决方案1】:

你的第一印象

根据@nvie 对特性分支的定义,我认为每个 项目的类应该是功能分支。

肯定是离题了。 The article states

一个特征分支的本质是只要它存在 功能正在开发中,但最终将被合并回 开发

还有regarding the develop branch

我们认为 origin/develop 是源代码所在的主要分支 HEAD 始终反映最新交付开发的状态 下一个版本的更改。有人将其称为“集成 分支”。 这是构建任何自动夜间构建的地方

所以严格按照这个定义,如果你将一个特性分支限制为一个类,你必须限制对该类的所有更改是非破坏性的(构建的),否则你不能合并 develop 直接进入它。

现在,如果您遵循模型-视图-控制器模式,您应该进行单元测试和理想的集成测试。每当您添加一项功能时,您都应该想知道它何时完成,因此每个功能都应该引入新的测试或修改现有的测试。

因此,为了回答您的问题,(通常)对组合进行分支的适当方法是确定哪些测试描述了该功能,并仅包含这些测试可验证的更改。

尝试相信您的 git 工作流程的实用性很大程度上取决于您的测试工作流程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-29
    • 2012-03-05
    • 2016-10-29
    • 2013-06-24
    • 2011-05-16
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多