为发布分支计时
团队的一部分正在致力于下一个版本/冲刺,其余人员则致力于在发布到生产之前测试和修复上一个冲刺的错误。
致力于下一个版本的部分现在就想要分支,另一部分则希望尽可能晚地分支,因为一旦我们分支,他们就必须开始合并修复。
我不喜欢让任何人等待提交,因为我们还没有分支。 我也不喜欢在人们不理解合并时浪费他们的时间。 (并且SVN不合并重命名)
有什么意见或建议吗? 谢谢
注意:
这在过去是一个更严重的问题,因为我们使用 tortoisesvn 1.6 和 1.4 存储库,这阻止了 GUI 执行分支/合并操作。 因此,我通过升级存储库消除了这个障碍。 至少现在团队成员应该很容易合并。
Part of the team is working on next release / sprint, the rest working on testing and bug fixing the previous sprint before a release to production.
The part working on next release wants the branch now, the other part wants it as late as possible because they will have to start merging fixes as soon as we branch.
I don't like making anybody wait to commit because we haven't branched yet. I also don't like wasting peoples time when they don't understand merging. (And SVN doesn't merge renames)
Any opinions or suggestions? Thanks
Note:
This was a worse problem in the past because we were using tortoisesvn 1.6 with a 1.4 repo which prevented the GUI from doing branch / merge operations. So I removed that impediment by upgrading the repo. It should atleast now be easy for the team members to merge.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
需要考虑的另一点是:
考虑将渐进式代码(最活跃使用的代码假定为面向新版本的代码)保留在 TRUNK 上。 从 HEAD(或以前的基线版本,如果您已标记它)中分支出来,以供错误修复团队使用。 如果他们愿意,他们可以继续修复错误并定期从主干合并以获取最新开发的更新。
另一方面,新的发布工作在 TRUNK 上进行,并且 TRUNK 可以指定为始终代表“当前”或“生产”环境中的内容。 如果您想将先前版本所做的修复收回到当前版本中,您可以从 bugfix 分支合并回 TRUNK。
该模型也可以在下一个发布标签之后迭代。
根据我的经验,这有助于最大限度地减少合并,因为错误修复的数量会减少,因此这意味着需要时需要合并回 TRUNK 的文件会减少。 在大多数(我说的是大多数不是全部:-))情况下,修复错误的开发人员数量会减少,因此这又意味着需要合并的文件数量更少。
HTH。
Another point for your consideration:
Consider keeping the progressive code (the code most actively used is assumed to be the one heading towards new-newer-newest releases) on the TRUNK. Branch out from the HEAD (or a previous baseline release if you have tagged it ) for the use of the bugfixer team. They can keep fixing the bugs and merging from trunk periodically to grab updates from the latest development if they wish.
The new release work on the other hand goes on the TRUNK and the TRUNK can be earmarked to always represent what is in the "current" or the "production" environment. If you want to grab back the fixes made for the previous releases into the curent release, you can merge back from the bugfix branch to the TRUNK.
This model can be iterated after the next release tag as well.
In my experience this helps minimise merges as the bug fixes will be less in number so this means lesser files to merge back to the TRUNK as and when required. In most(i say most not all :-)) cases, the number of dev folks on bugfixing will be less in number so again this means smaller number of files needing merges.
HTH.
在 SVN 中,分支不一定是一个痛苦的过程 - 特别是使用最新版本的 TortoiseSVN 和 SVN 客户端。 它需要一些 VCS 和存储库的知识,但这对于任何软件开发人员来说都是必需的。
需要考虑的是在每个开发阶段可能会发生多少新代码和多少修改。 通常,冲刺/发布阶段会比错误修复阶段生成更大量的变更集。 这意味着更明智的做法是立即分支并合并少量的错误修复。 在大多数情况下,等待分支会导致更混乱的合并。
尽早分支还可以让您的错误修复更多地暴露出来,因为冲刺开发人员可以在新功能的单元和功能测试期间执行它们。 更多曝光=更好的无错误修复。
Branching does not have to be a painful process in SVN - especially with the latest versions of TortoiseSVN and the SVN client. It requires some knowledge of the VCS and the repo, but that should be required for any software developer.
Something to think about is how much new code and how many modifications are likely to occur in each phase of development. Typically the sprint/release phase generates a heftier change set than the bug-fix stage. This implies that it's more sensible to branch immediately and merge the smaller number of bug fixes in as they come. In most cases, waiting to branch results in a messier merge.
Branching early also gives your bug fixes more exposure as they can be exercised by the sprinting developers during the unit and functional tests for new features. More exposure = better bug-free fixes.
我强烈推荐使用 Git/Mercurial 来解决此类问题。 :)
但既然我知道这不是一个选择,我只想说,对于这些类型的问题确实没有 100% 好的答案。 一般来说,我倾向于在流程的最后阶段才进行分支,因为分支和与 CVS/SVN 的合并往往是重量级流程。 您推迟分支流程的时间越长,在很多方面对您来说就越好。 但正如开发新功能的团队所知,这种情况只能持续这么长时间……在某些时候,推迟新功能的成本会超过推迟合并的好处。
在我现在的情况下,这通常会导致在新版本发布前 1-2 周(有时甚至更短)出现分支。 但确切的时间总是根据驱动版本的特定压力以及即将发布的新功能而变化。
I highly recommend Git/Mercurial for these sorts of problems. :)
But since I know thats not an option, I'll just say that there really is no 100% great answer to these types of problems. In general, I tend to prefer not branching until as late in the process as possible, as branching and merging with CVS/SVN tend to be heavyweight processes. The longer that you can defer the branch process, the better off you are in many ways. But as the team working on new features knows, this can only go on for so long... at some point the cost of delaying new features outweighs the benefits of deferring the merge.
Where I am now, this often results in a branch 1-2 weeks (or sometimes even less) before the release of a new version. But the exact time always varies based upon the specific pressures driving releases, and new features in upcoming releases.
一旦您进入某个版本的功能冻结状态,您就必须进行分支,以便开发下一个版本的团队不会继续破坏您试图放置的版本。 尝试进一步延迟分支只会导致更多问题。
如果您使用功能分支,那么这会变得更容易。 所有修复都发生在主干中,您保留一个 RC 分支,您将在其中发布版本,并且您可以在进行测试发布之前从主干进行批量合并。 功能分支从主干合并,并且仅在功能准备就绪时才合并回主干。 虽然这听起来会导致更多的合并,但它使所有合并都非常简单。
这与使用 DVCS 获得的工作流程类似,不同之处在于所有分支都清晰可见,而不是分布在开发人员的计算机上。
Once you go into feature freeze for a release you have to do the branch so that the team working on the next release don't continue to break the one you're trying to put to bed. Trying to delay a branch further than this is just going to cause more problems.
If you use feature branches then this gets easier. All fixes happen in trunk, you keep a RC branch where you will release from and you can do wholesale merges from trunk to it ahead of doing testing releases. Features branches merge from trunk and only get merged back into trunk when the feature is ready. Although this sounds like it results in a lot more merging, it keeps all of the merges very simple.
This is similar to the workflow that you would get with a DVCS, except that all of the branches are in plain sight rather than spread around developer's machines.
尽可能晚地分支。
Branch as late as possible.