TFS2010 分支用于频繁发布和无限期维护
我很难找出一个好的分支策略来轻松合并和跟踪我们环境中的更改集。
发布管理的快速总结如下:
我们有几个商业产品作为解决方案的一部分。不可改变的外部因素导致我们不得不无限期地维护软件的多个版本。发布过于频繁,通常是为了响应一系列增强功能或缺陷,并且时间表非常紧迫。仅修复错误的版本通常是在父版本分支中维护的点版本。具有新功能的版本通常会成为新版本/分支。
源代码控制树看起来像这样:
- trunk - dev
- Product ABC
- ABC 1.0
- ABC 1.0.1 (point release same branch)
- ABC 2.0
- Product XYZ
- XYZ 1.0
- XYZ 2.0
Dev 显然是我们的开发分支,预计不会稳定。通过同行评审的开发更改被提升到主干,我喜欢将其视为稳定但仍在开发的代码。当我们向主干添加新功能时(通常是为了响应客户项目),我们最终接近发布,我从主干分支到一个分支,如上面的“产品 ABC 2.0”。
当我们开始修复发布分支中的缺陷时,噩梦就发生了。我们希望将它们合并回主干,但它应该首先进入开发分支 - 然而,由于分支是从主干创建的,所以这是不可能的,除非我们进行无基础的合并回开发。同样,如果我们在开发中进行更改并将它们移动到主干中,并希望再次将它们合并到产品分支中,那么如果没有无根据的合并,这是不可能的。
这似乎是一个非常复杂的分支计划,我确信它是完全错误的,或者没有好的方法来使用我们的模型进行分支,以及我们为不同的客户做了和维护了多少个版本。
MS指南(甚至是高级高级计划)似乎是基于更简单的发布场景。我在这里缺少什么可以让我恢复理智的东西吗?
I am having trouble figuring out a good branching strategy that allows for easy merges and tracking of change sets in our environment.
The quick quick summary of the release management goes like this:
We have several commercial products as part of a solution. Unchangeable external factors result in our having to maintain multiple versions of the software indefinitely. Releases are way too frequent and usually in response to a list of enhancements or defects and on VERY aggressive schedules. Bugfix-only releases are usually point releases maintained in the parent release branch. Releases with new functionality usually become a new version/branch.
The source control tree looks like this:
- trunk - dev
- Product ABC
- ABC 1.0
- ABC 1.0.1 (point release same branch)
- ABC 2.0
- Product XYZ
- XYZ 1.0
- XYZ 2.0
Dev is obviously our development branch and is not expected to be stable. Dev changes that pass peer review are promoted to the trunk which I like to think of as stable but still development code. As we add new features to the trunk (usually in response to a customer project) we eventually get close to releasing and I branch off of the trunk into a branch like "Product ABC 2.0" above.
The nightmare develops when we start fixing defects in the release branch. We want to merge them back into the trunk but it should go into the dev branch first - however since the branch was created from the trunk this isn't possible unless we do a baseless merge back to dev. Likewise if we make changes in dev and move them into the trunk and want to merge those into a product branch again it isn't possible without a baseless merge.
This just seems to be such a convoluted branching plan that I'm convinced it's totally wrong or that there is no good way to branch with our model and how many releases we do and maintain for years for different customers.
The MS guidance (even the advanced advanced plan) seems to be based on simpler release scenarios. Is there anything I am missing here that would bring some sanity back?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在看过许多分支策略之后,我最初的建议非常简单:
以尽可能简单的分支计划为目标。
换句话说,不要在没有充分理由的情况下使事情变得过于复杂。大多数团队都将合并视为一种痛苦,而这种感觉来之不易。
需要考虑的要点:
并已获准交付)
分支机构。绝对需要时应创建新分支。
原因可能是:主要版本、功能隔离、发布的客户
版本、修补程序\补丁隔离
分支
on 应该在线。通过删除来避免“僵尸”分支
已合并且不活动的分支
您的场景可能介于 TFS 分支指南。然而,复杂的发展计划往往是多种多样的,因此在选择新策略时请自行判断。
Having seen many branching strategies, my initial advice is very straightforward:
Aim to the simplest branching plan as possible
In other words, don't over-complicate things without a good reason. Most teams treat merging as a pain and they've hard-earned that feeling.
Points to consider:
and had been green-lighted for delivery)
branches. New branches should be created when absolutely required.
Reasons may be: major version, feature isolation, released customer
version, hotfix\patch isolation
branch
on should be online. Avoid "zombie" branches by removing
branches that had been merged and inactive
Your scenario is possibly somewhere in between scenario #3 (Branching and Labeling) and #4 (Multi Feature Teams) in the TFS Branching Guide. However, complex development plans tend to diverse so be your own judge when choosing a new strategy.