Version control Mercurial功能工作-保持定制工作清洁最佳实践?

Version control Mercurial功能工作-保持定制工作清洁最佳实践?,version-control,mercurial,workflow,branch,rebase,Version Control,Mercurial,Workflow,Branch,Rebase,我已经使用源代码管理系统大约10年了,显然每个系统都有自己的习惯用法和实践 我目前正在使用Mercurial进行.NET开发,我有一个特别的要求,我想知道您的意见如何才能最好地实现我的目标 我们开发了一个基线产品,这是一种滚动发布。一些客户需要精简产品(因为获得更便宜的许可证)或完成定制工作。我倾向于分支“主干”(Mercurial中的默认分支),进行定制工作并创建构建 当在“主干”中完成新工作并且我需要来自定制分支的新构建时,我将在此处使用hg merge-r CHANGESET\u NUM\

我已经使用源代码管理系统大约10年了,显然每个系统都有自己的习惯用法和实践

我目前正在使用Mercurial进行.NET开发,我有一个特别的要求,我想知道您的意见如何才能最好地实现我的目标

我们开发了一个基线产品,这是一种滚动发布。一些客户需要精简产品(因为获得更便宜的许可证)或完成定制工作。我倾向于分支“主干”(Mercurial中的默认分支),进行定制工作并创建构建

当在“主干”中完成新工作并且我需要来自定制分支的新构建时,我将在此处使用
hg merge-r CHANGESET\u NUM\u from\u DEFAULT\u
合并更改,然后执行构建

这很好,但是定制分支很快就会被与“主干”相关的提交填满,而不是真正的定制特性。这意味着当我需要查看这个分支的变更集时,它们是杂乱无章的

我真正希望它移动分支“连接点”开始的位置,因此定制变更列表只包含定制签入,但定制分支的父级会发生更改

我试着使用rebase扩展,因为它看起来应该这样做,但它却进行了许多合并,仍然使我的定制分支混乱不堪


有没有办法让我定制的分支保持干净?还是我走错了路?

你定制的分支现在已经清洁了。但是-如果您不想在分支日志中看到合并集,只需在日志中跳过即可

hg帮助日志

选项:

-M—无合并不显示合并

hglog-r55:tip--template“{branch}:{rev}\n”-b default

默认值:55

默认值:56

默认值:57

默认值:60

默认值:61

默认值:63

默认值:65

默认值:66

hglog-r55:tip--template“{branch}:{rev}\n”-b default-M

默认值:55

默认值:56

默认值:57

默认值:61

默认值:65

默认值:66

和THG的图形截图


对于非英国人,“定制”意味着“定制”。我不得不查一下:)谢谢马克,很抱歉搞混了!谢谢,您的回答确实让我能够轻松地查看干净的更改集,因此确实回答了我的问题-但您认为我的方法分支小型定制更改是一种好的做法还是有更好的方法?tommed-在您的工作流程中看不到任何不好的地方。“更好的方法”是主观的,依赖于开发人员。“不要打破完整”是很好的规则谢谢!我最好将“更好”定义为一群经验丰富的人的共同意见,因为他们曾经用一种方式做过,后来希望他们真的没有!!:)@tommed-从这个视角我可以注意到1。“每个任务分支”工作流:每个原子任务在短生命分支中开发,每个开发聚合分支只包含合并集(因为使用revset的“清理”日志的成本变得更复杂)2。对于上游fork,有时MQ补丁可能是可用的:repo是干净的,与客户相关的更改是命名的MQ路径集,其中一些子集(qpop/qpush/qgoto)应用于普通代码