Geo*_*eng 27 mercurial dvcs release-management
这是我早期的问题 "如何使用mercurial管理并发开发" 的表亲问题,该问题涵盖了各个开发人员的工作流程.这个问题的答案实际上会影响开发人员工作流程的选择.
这不是一般的"版本管理最佳实践"或CI问题,因为它已经被问 很多 次有很好的答案,而且也可用来消磨时间的文学庞大的身躯.
我只是要求在发布管理的上下文中使用mercurial的具体方法.
最明显和最主要的答案应该是稳定的/默认的,这完全由@Steve Losh 的漂亮博客覆盖,并且在他的回答中更简洁.它简单而有效.
这种设置的一个突出例子是hg本身.hg使用更多的存储库进行主动开发,但是出于管理目的,一切似乎都包含在主repo的stable/default分支中.
hg设置实际上表示稳定/默认的变体,或者更确切地说是扩展版本:分支克隆.我在回答关于命名分支与多重回购的问题时描述了这个过程(来自@Martin Geisler的另一个很好的答案).在我的回答中我忘记提到的是分支克隆如何为开发人员工作流程工作:如果你需要修复分支的bug,你可以hg clone <main repo>#<branch>但不是分支克隆,因为你的变更集仍然会回到主仓库并推出自动分支克隆.当然,您可以选择不克隆并仅hg update <branch>在主克隆中,但是大多数使用单独克隆的参数(尤其是独立构建)都适用于此处.
现在回到问题:是否有其他方法适合不同的现实场景?例如,传统的主要/次要/补丁发布周期与版本之间的长时间推移可能需要完全不同于快节奏,即用即发的Web应用程序.如果您愿意,还请评论稳定/默认和分支克隆方法.
由于这几乎是一个调查问题,我只能主观地接受"最佳"答案.如果我能得到比我的开发人员工作流程问题更多的答案,那就是.
感谢您的所有投入!
我正在重新设计我们的发布工作流程.所以我发现了这个问题.我决定写下我的经历.物有所值 ...
对于开发,我们使用的东西似乎是你所谓的稳定/默认工作流程的变体(当然,所有内容都通过执行工作流的命令,我之后称之为myw):
myw create theproject创建稳定/ dev克隆myw clone theproject dev mygreatfeature:
myw fetch dev和myw fetch stable任何时间myw close theproject mygreatfeature所有这一切都很好,非常顺利.我们首选克隆到命名分支,因为它很容易真正关闭一个特征分支,并且当时mercurial"命名分支"部分看起来像"正在进行中".
工作流程的发布部分目前基本完成:
myw release 1.2.3_RC2:
myw release 1.2.3这很有效,即使我们需要改进一些命令来平滑过程.其中一个主要缺点就是很多克隆:)
对于旧版本的管理,我们目前已为每个主要版本提供了稳定完成的克隆.由于没有很大的需要向后移植许多功能,我们只需要挑选一些非常糟糕的错误hg transplant(顺便说一句,扩展性很强).
我们已经使用了大约一年,我们当然需要改进我们的自制命令,特别是对于发布部分:)
主要的缺点是你必须给你/你的团队一些工具来处理它,因为没有它们它可能是无法管理的,因此我们myw自制的命令集.像往常一样,功能分支不应该持续太久,或者合并可能很难.重构/重命名之类的事情必须在选定的点上完成,否则它将为您的团队提供大量的合并工作.
由于我们将要维护越来越多的版本,我正在努力改进"旧版本,但必须支持"管理部分.读Bert F评论,我读过这篇很棒的文章.有很好的想法,很好地解释了一个非常好的计划!似乎有人已经将他的工具git-flow的hg版本实现为hg-flow.需要考虑的事情.我喜欢发布和修补程序分支.而且我认为用工具强制执行这样的工作流程是非常强制性的!
MY2C
| 归档时间: |
|
| 查看次数: |
4236 次 |
| 最近记录: |