我正在使用TFS设置DevOps流程并想知道分支策略。如果我有以下样本分支(来自Guidance: A Branching strategy for Scrum Teams的图像)。
我通过MAIN分支(与Jenkins)的持续集成设置了DevOps流程(持续集成和持续交付)。
请就此问题提出建议。
答案 0 :(得分:3)
通常,热修复应该从主分支上的相关版本中获取。 然后需要为hotfix创建一个专用分支,将其与最后一个stable分支合并。 如果它通过了整个QA,单元测试,系统测试等,那么将它作为下一个发布版本合并回主分支。
在使用git时,您可以查看以下示例,引用位于此处:git best practice。源代码控制不是问题,而是主要思想。请仔细阅读我认为您能够找到所需内容的文章。
有些组织仍在使用补丁...... 我不是这个解决方案的一大乐趣,但如果这是你的情况而不是让我知道,因为在补丁中有一些不同的解决方案。
答案 1 :(得分:1)
建议让所有分支机构始终保持同步状态。当您想要处理修补程序时,您可以创建一个新分支" HotFix"从主要。完成修补程序后,您需要将它从HotFix合并到Main,并从Main合并到Release。
如果您在版本中进行了任何更改,则需要将其合并回Main以完成更改。
答案 2 :(得分:1)
修补程序是已发布软件的修补程序。如果您有一个发布分支,则从中创建一个修补程序分支是合适的。在将该修补程序提升为Prod之后,您可以反向集成备份链到Main。修补程序 - >发布 - >如果需要,主要的,甚至是向前集成到下一个sprint。
答案 3 :(得分:1)
显然,您选择的答案取决于您的特定要求;但是,通常,您应该从main中删除一个版本,并从发布分支中删除一个热修复。就个人而言,我会说该代码不应该返回到发布分支,而是在开发分支中进行双重修复。
这样做的主要原因是,一旦您发布了代码,该代码分支就应该像发布时一样被锁定。如果你遵循这个,那么你总是可以回到以前的状态。正如已经提出的那样,当需求或优先级发生变化时,您可能会对修补程序进行一半的更改;或当客户报告实时代码中的错误时。如果您维护一个单独的分支,则始终可以访问该代码。
答案 4 :(得分:0)
如何处理这取决于您的发布和维护策略或客户协议。
如果你的发布分支也是一个维护代码行(看起来就像你的描述),那么从中创建功能分支,实现一个热修复,测试,合并并发布一个"补丁&#34 ;。理想情况下,你也应该为"维护"科。 在此之后,您可以将热修复与主代码行集成,或将问题放在待办事项上,以便为将来的新版本实现不同的版本。
BTW:这里有一些不错的文章: https://www.cmcrossroads.com/article/agile-perspective-branching-and-merging 和 http://www.bradapp.com/acme/branching/branch-creation.html
答案 5 :(得分:-1)
如果您使用敏捷,那么功能分支可能是一个不错的选择。唯一的问题是它必须与JIRA或AGM等票务工具结合使用。为了处理此类场景中的修补程序,您可以在AGM或JIRA中创建用户素材,完成后将合并到主线干线上。