使用“功能分支”与重构兼容吗?

2024-01-02

特征分支是指每个功能都在自己的分支中开发,只有在经过测试并准备好交付后才合并到主线中。这允许产品所有者选择进入给定发货的功能,并在出现更重要的工作时“保留”部分已编写的功能(例如,客户打电话给 MD 投诉)。

重构正在改造代码以改进其设计,从而降低变更成本。如果不不断这样做,您往往会得到更丑陋的代码库,这更难以为其编写测试。

现实生活中总有这样的顾客sold新功能和由于政治原因所有客户都必须看到“他们的”功能组正在取得进展。因此,很少有时候分支上没有大量半成品功能。

如果进行了任何重构,“功能分支”中的合并即使不是不可能,也会变得更加困难。

我们是否必须放弃进行任何重构?

也可以看看 ”您如何处理重构和合并需求之间的紧张关系 https://stackoverflow.com/questions/200757/how-do-you-handle-the-tension-between-refactoring-and-the-need-for-merging?rq=1?"


我这些天的看法是,由于政治原因导致这些分支机构长期存在,以及开发总监的权力被剥夺,导致他无法采取行动,我应该更快地开始寻找新工作。


功能分支肯定会让重构变得更加困难。它们还使持续集成和部署等事情变得更加困难,因为需要构建和测试的并行开发流的数量不断增加。您还回避了“持续集成”的中心原则——每个人都在相同的代码库上工作,并“持续”地将他们的更改与团队其他成员的更改集成。通常,当使用功能分支时,功能分支不会持续构建或测试,因此“功能分支”代码第一次在生产构建/测试/部署过程中运行是在它“完成”并合并时进入后备箱。这可能会在开发过程的后期和关键阶段引入一系列问题。

我持有有争议的观点你应该不惜一切代价避免功能分支。合并的成本非常高,(或许更重要的是)未能“持续集成”到共享代码库的机会成本甚至更高。

在您的场景中,您确定需要为每个客户端的功能建立一个单独的功能分支吗?您是否可以在主干中开发这些功能,但在它们准备好之前将其禁用?一般来说,我认为最好以这种方式开发“功能”——即使它们还没有准备好生产,也将它们签入主干,但在它们准备好之前将它们保留在应用程序之外。这种做法还鼓励您保持组件的良好分解并屏蔽在精心设计的接口后面。 “功能分支”方法为您提供了在代码库中进行彻底更改以实现新功能的借口。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用“功能分支”与重构兼容吗? 的相关文章

  • GIT 或 SVN 或...适用于前端开发人员

    我最近开始将一些项目导入到工作中的 Subversion 存储库中 在接下来的几周内 我希望团队中的每个人都能负责自己的源代码控制管理 我选择 SVN 而不是 GIT 的原因是我想要everyone团队中的人员 包括设计师 前端人员 集成商
  • 如果我想将分支合并到主干上,“svn merge --reintegrate”和不重新集成的 svn merge 有什么区别

    In the svn book http svnbook red bean com en 1 7 svn ref svn html svn ref svn sw reintegrate它说merge s reintegrate是 将源 UR
  • 如何在 C# 中重构 log4net 语句?

    好吧 读完丹本对此的回答后post https stackoverflow com questions 2230180 whats log4j actually doing when we turn on or off some log p
  • 在数据库中存储差异的最紧凑方式是什么?

    我想实现类似于维基媒体的修订历史的东西 最好使用的 PHP 函数 库 扩展 算法是什么 我希望差异尽可能紧凑 但我很高兴只能显示每个修订版与其同级修订版之间的差异 并且一次只能回滚一个修订版 在某些情况下 只有几个字符可能会发生变化 而在其
  • 在没有 Resharper 的情况下删除 C# 项目中未使用的引用 (!= usings)?

    有没有办法在 C 项目中删除未使用的程序集引用 而不需要 Resharper 的帮助 这MSDN 文档确实概述了 Visual Basic 的一些内容 http msdn microsoft com en us library 7sfxaf
  • GitLab 是否通过 git-annex 或其他方式支持大文件?

    我运行一个 GitLab 实例 并希望允许我的用户上传几乎任何大小的文件 众所周知 git 在处理大文件方面仍然存在问题 我知道通过将文件存储在其他地方并仅对元数据进行版本控制来规避此问题的方法 例如git annex git media
  • 相当于 svn 对 Perforce 的责备

    命令行上是否有相当于 svn 对 Perforce 的责备 p4 annotate不显示用户名 仅显示变更集编号 没有祖先历史 我目前必须通过祖先跟踪代码并与文件日志进行比较 并且必须有一种更简单的方法 也许是 F OSS 实用程序 我对b
  • 将文件提交到不同的分支而不进行签出

    是否可以在 git 分支中提交文件而不检出该分支 如果是这样怎么办 本质上 我希望能够将文件保存在我的 github Pages 分支中 而无需一直切换分支 有什么想法吗 我需要以原子方式完成此操作 而不更改当前目录 因此多个命令将无法工作
  • 如何在版本控制系统中安全地保存密钥和密码?

    我在版本控制系统中保留了开发和生产服务器的主机名和端口等重要设置 但我知道这是不好的做法保留secrets 如私钥和数据库密码 位于 VCS 存储库中 但密码 就像任何其他设置一样 似乎应该进行版本控制 所以呢is保持密码版本控制的正确方法
  • 如何运行“git status”并获取文件名

    如何运行 git status 并只获取文件名而不是长相对路径 的输出git status porcelain旨在易于在脚本中解析 输出完整路径而不是相对路径 无论当前目录位于树中的位置 每行输出由git status porcelain有
  • git svn 工作流程 - 功能分支和合并

    我现在使用 git svn 和以下工作流程 git clone
  • 如何从 Emacs 中检出 Perforce 下的文件?

    我在工作中使用 Perforce 进行源代码控制 并且希望从 Emacs 中 打开以进行编辑 源代码控制下的文件 那怎么办呢 我需要在 Emacs 中设置什么 有插件吗 我还想执行其他 p4 操作 例如提交我的更改等 Perforce Em
  • Mercurial:使一个分支与另一个分支相同

    我正在与另一位相对较新的开发人员合作 为了让我能够对她的工作进行代码审查 我让她创建了一个分支 我可以审查该分支 如果我对更改感到满意的话 还可以定期合并该分支 该分支已被清除 所以我只想 重置 它 使其与主线相同 这样她就可以从干净的代码
  • 如何从现有 git 存储库中的文件夹创建新的 git 存储库?

    我想在现有 git 存储库下的文件夹中创建一个新的 git 存储库 我希望将历史记录保留在新存储库中 如何创建这个新的 git 存储库 您可以克隆它 然后在克隆上应用过滤器分支 以便拆分该存储库 仅提取所需的目录 及其完整历史记录 See
  • Access 2007 数据库和应用程序的版本控制

    我需要对 Microsoft Access 2007 数据库和应用程序进行版本控制 目前 所有内容都包含在单个 mdb 文件中 该应用程序包括 Forms VBA code 实际数据库 我假设我需要将数据库与表单 代码分开 我希望能够将表单
  • 如何将 git 存储库中的现有目录设为 git 子模块

    我对 git submodules 很困惑 基本上我的问题是我无法让 git 理解这一点 main project submodule是一个子模块 我对 git 子模块有很好的经验 in my 点文件存储库 https github com
  • Git:在本地合并远程分支

    我已经通过以下方式拉取了所有远程分支git fetch all 我可以看到我想要合并的分支git branch a作为远程 原点 分支名称 问题是它无法访问 我无法合并或结帐 您可以参考那些远程跟踪分支 列出git branch r 及其遥
  • 删除生成的 Javadoc 中的注释“Generate by Javadoc on

    javadoc 命令会自动插入一条注释 如下所示 在每个生成的 HTML 文件中 这完全阻止了版本化 javadoc 的更改跟踪 因为在重新生成文档时每个文件都会被修改 我问的上一个问题说服我不要对任何 javadoc 进行版本控制 但它也
  • 如何将普通的 Git 存储库转换为裸存储库?

    如何将 普通 Git 存储库转换为裸存储库 主要区别似乎是 在普通的 Git 存储库中 你有一个 git存储库内的文件夹 包含构成工作副本的所有相关数据和所有其他文件 在裸露的 Git 存储库中 没有工作副本和文件夹 我们称之为repo g
  • git checkout 到分支需要很长时间

    我使用的是 Ubuntu 17 10 并且使用 git 版本 2 14 1 每当我从 master 创建一个分支并尝试签出它 或从它签出到 master 时 都会花费大量时间 大约几分钟 有时接近 10 分钟 确实 我有几 GB 的数据 但

随机推荐

  • 在 np.array 中广播函数调用

    我正在尝试创建一个充满对象的 NumPy 数组 我想知道是否有一种方法可以广播到整个数组 让每个对象执行某些操作 Code class player def init self num 5 self num num def printnum
  • 在 settings.json 中向 Visual Studio Code 主题添加一个运算符

    我正在尝试添加这些词and or not 对于 Lua 到名为 Visual Studio Dark 的 Visual Studio Code 主题 该主题包含在 vscode 常规下载中 并且在 选择颜色主题 屏幕中称为 Dark Vis
  • 样式化组件 - 如何防止将 prop 传递给扩展组件?

    我正在延长Textarea而且我要completed可以通过以下方式访问StyledItemTextarea但不是Textarea 我怎样才能实现这个目标 import Textarea from react textarea autosi
  • 在 Cocos2d 和 Box2d 中获取物体上的接触点

    我很new对于 Cocos2d 和 Box2d 我 一直在关注教程 http www raywenderlich com 和 一般是黑客攻击 不过 我有一个 我无法解决的问题 我创建了 2 个主体和固定装置 在 Box2d 世界中 并创建了
  • 具有多个条件的 if 语句[重复]

    这个问题在这里已经有答案了 由于我缺乏 Bash 知识 我带着一个小问题来找你 我有一个包含 41 个文件夹的 Apps 目录 每个文件夹中都有一个css包含glue1 css 文件的子目录 我的目标是通过 bash 循环删除该 css 文
  • AngularJS在容器中无限滚动

    我正在尝试使用AngularJS无限滚动 http binarymuse github io ngInfiniteScroll 它似乎仅在滚动相对于浏览器窗口时才起作用 我想在内部 DIV 中进行无限滚动 即我有一个带有通用包装器的页面和一
  • 启动画面图标未完全显示

    我使用新的闪屏 API 为 API 级别 23 以下的所有 Android 版本添加均匀的闪屏 启动图标有什么要求吗 目前我尝试使用 svg 我认为它会在不同的屏幕上自动调整大小 有没有人也经历过这种情况并有解决方法或知道这些 隐藏的 要求
  • 自定义表单身份验证+MVC3+AuthorizeAttribute

    我本质上做的是this https stackoverflow com a 2342196 69735 但是 每当我使用内置的 AuthorizeAttribute 时 MVC 框架 我猜 永远不会查看我的主体来确定用户是否具有正确的角色
  • 从evaluateJavaScript函数的完成处理程序返回HTML字符串

    我知道我不是第一个问这个问题的人 但我无法解决这个问题 我正在尝试使用以下方法从 HTML 中获取一段字符串evaluateJavaScript在带有 Swift 3 的 Xcode 中 这段文本被称为value在完成处理程序中 所以我这样
  • CKeditor Html 5
    标签问题

    我使用 CKeditor 版本 4 我面临与 HTML 5 标签相关的问题 输入HTML代码 div class col md 4 col sm 4 div class item cont a href contents view home
  • Ruby on Rails 私人链接共享:Google 文档风格

    让用户能够共享内容的最佳方式是什么 私人链接使任何点击它的人都可以查看具有隐私限制的特定页面 文档 项目 就我而言 用户创建的事件仅限于数据库中的某些关系组 即 朋友 朋友的朋友等 我有一个 在 过滤器之前在事件控制器中检查当前登录用户的资
  • 在 Android 应用程序中使用 smack 进行文件传输。

    这个错误出现在日志中 from kutbi1 360degree Smack to akash 360degree Smack type error id hK1L6 5 gt
  • 具有多个子字段的 Drupal 自定义 CCK 字段

    有没有办法创建一个可以有多个值的复合字段 每个值都有另一组复合值 例如 我们希望最后有这样的结构 Group 1 unlimited number of groups 子字段 每组无限个子字段 子字段 Group 2 子字段 子字段 对于定
  • 如何防止 WordPress 页面被用户删除

    一些 WordPress 插件会创建页面或帖子 插件的正常功能依赖于该页面或帖子的存在 例如 管理电子邮件列表的插件可能依赖于取消订阅页面 用户可能会有意或无意地删除该页面 插件如何防止其页面被删除 首先 当您创建页面时 您可以将其 ID
  • 直接在 Intellij Idea/WebStorm 中运行笑话测试?

    我在用着jest https facebook github io jest 在我的 ReactJS 应用程序中编写测试 到目前为止 要运行我的测试套件 我需要输入 npm test 这是 package npm 中的片段 scripts
  • Python3没有这样的文件或目录

    我正在尝试制作 python3 可执行脚本并从 shell 运行它们 我的系统上安装了 python 3 4 0 所以 我添加了 home spandan python codes 目录到Python路径 因为我计划将我的脚本和模块保留在这
  • AWS CodePipeline 将多个存储库作为单一源进行跟踪

    我正在调查 CodePipeline 是否适用于我们的用例 我们有数百个存储库 全部由 CodeCommit 托管 除了较小的配置之外 所有这些的构建 测试 发布过程都是相同的 我想做的是建立一个管道 用于构建 测试 发布在任何这些存储库中
  • R传单。将点数据分组到单元格中以汇总许多数据点

    早上 下午或晚上 我有以下位置数据 调整自 网格单元内采样点的计数 https stackoverflow com questions 56217221 count of sampling points within a grid cell
  • Eclipse Luna CDT:什么是标头变体?

    我很难让 Eclipse Indexer Codan 识别头文件中的某些数据声明 有一个新的偏好索引所有标头变体 http wiki eclipse org CDT User NewIn83 Preferences for header v
  • 使用“功能分支”与重构兼容吗?

    特征分支 是指每个功能都在自己的分支中开发 只有在经过测试并准备好交付后才合并到主线中 这允许产品所有者选择进入给定发货的功能 并在出现更重要的工作时 保留 部分已编写的功能 例如 客户打电话给 MD 投诉 重构 正在改造代码以改进其设计