【发布时间】:2016-01-31 06:43:57
【问题描述】:
我将在这个问题的开头声明我们可能错误地使用了 TFS,这是基于早期对 TFS 工作方式与 GIT 工作方式的一些误解。
背景:
- 我们有一个主分支,这是我们进行所有开发的地方。
- 当我们准备好发布时,我们会从主分支创建一个分支并按版本命名(例如,“v8.10.0”)。
- 我们从这个新分支编译和发布。
- 然后我们继续在主分支上进行开发。
- 如果在之前的版本中发现了一个关键问题,并且我们在开发分支的冲刺中处于中流状态,那么我们需要为之前的版本创建一个补丁。在这种情况下,我们从发布分支创建一个新分支并开始修复该新分支上的问题(例如“v8.10.1”)。
- 然后我们希望将我们在 8.10.1 分支上应用的修复程序放到主分支中,因此我们执行从 8.10.1 到 dev 的合并,这就是问题开始发生的地方。这种合并是毫无根据的合并,毫无疑问,合并需要数小时才能完成,涉及大量手动合并,并且在该过程结束时,通常有少数文件在合并过程中被搞砸了。更糟糕的是,TFS 通常认为它可以自动合并一些文件,但这样做往往会完全错误,我们最终会得到完全破坏的代码。
我们对如何完成这项任务的基本理解似乎存在缺陷,虽然它不经常发生,但它总是困扰着我们,所以我们缺少什么,以及做我所拥有的正确方法是什么上面列出的?
【问题讨论】:
-
为什么不将 10.1 合并到 10.0,然后将 10.0 合并到 main?这样就不会空穴来风了……
-
为什么每次发布时都要进行分支?您是否同时在生产中维护多个版本的应用?
-
@GiorgiNakeuri - 听起来这可能是我们一直在做的更好的方法,我想我们没有这样做,因为我们并不真正理解那会更好方法。
-
@GiorgiNakeuri - 我们为每个版本分支可能是由于我们对 TFS 应该如何工作的理解存在缺陷。我们的目的是在发布时创建代码的快照商店,这样如果我们在下一个 sprint 继续开发时,我们迫切需要为给定版本发布补丁,我们可以回到那个快照,对该代码库进行更改并发布补丁版本。在大多数情况下,补丁会分发给所有客户(这是一个 SaaS 应用程序,部署给不同服务器上的多个客户)。
-
您可以创建一个名为 relv.8.10 的标签而不是分支,并且您始终可以通过该标签获取版本。