Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Version control 版本控制:围绕功能开发进行bug修复/代码增强_Version Control_Mercurial_Workflow_Dvcs - Fatal编程技术网

Version control 版本控制:围绕功能开发进行bug修复/代码增强

Version control 版本控制:围绕功能开发进行bug修复/代码增强,version-control,mercurial,workflow,dvcs,Version Control,Mercurial,Workflow,Dvcs,我有一个与Mercurial相关的工作流问题(可能适用于其他DVC) 回购使用典型的默认/稳定设置进行设置 您的任务是构建一个新功能,预计需要一些时间(月+)。在使用此功能时,您会遇到一个您认为应该尽快修复并应用于生产的bug。或者,您可能会注意到一些可以更好地记录的代码 我的假设是,您在默认情况下进行修复,然后切换到稳定状态并再次进行修复(手动或应用补丁)。这是正确的还是应该立即切换到稳定,在那里进行更改,然后将稳定合并到默认值 使用补丁对我来说似乎更有意义。您可以专门针对bug修复进行提交,

我有一个与Mercurial相关的工作流问题(可能适用于其他DVC)

回购使用典型的默认/稳定设置进行设置

您的任务是构建一个新功能,预计需要一些时间(月+)。在使用此功能时,您会遇到一个您认为应该尽快修复并应用于生产的bug。或者,您可能会注意到一些可以更好地记录的代码

我的假设是,您在默认情况下进行修复,然后切换到稳定状态并再次进行修复(手动或应用补丁)。这是正确的还是应该立即切换到稳定,在那里进行更改,然后将稳定合并到默认值

使用补丁对我来说似乎更有意义。您可以专门针对bug修复进行提交,并在方便的时候应用该补丁。我的意思是,如果这个bug不是很严重,那么就没有必要急着打断你的流程。对吧?

那么,你如何处理这种情况呢


谢谢

一旦您提交了小型修复程序,就可以使用并在另一个分支上报告相同的修复程序


如果这不合适,其他樱桃采摘的可能性将在SO问题中详细说明。

您可以返回分支点(修订版
B
),在那里修复错误(修订版
X
),然后将修复合并到两个分支中(
M1
M2
):

这样,您可以通过正常的
hgmerge
操作在每个分支中获得修复;无需修补、移植或MQ'ing


同样的想法更进一步:你可以回到最初引入bug的版本。通过将此作为修复的基础,您将确保可以将修复合并到包含该bug的任何分支中。

谢谢您,VonC,移植扩展将很好地完成。谢谢你的链接。你可以通过更好的工作流程来避免这种情况。下面的Wim解决方案更可取,因为您不会在repo中使用不同的哈希ID进行两次相同的更改。在两个地方进行相同的更改会使这些地方最终合并的自动化程度降低。@Ry4an:我同意。再一次,我的理由太像Git用户;)嘿,嘿,没有“错”,他似乎喜欢你的答案。我只是觉得我应该鼓吹另一种解决方案,以减缓你最终取代我成为mercurial标签的统计领先者@瑞安:在我看来,你将永远是Mercurial的统计领导者;)Huzzah,对于理解“在哪里”进行更改的人来说,更改与更改本身一样重要。我可以理解为什么人们不想复制历史,但对于简单的修复,“移植”似乎是最简单的方法,它似乎还可以保持时间线良好且线性,合并可能会使时间线复杂化。我只是在偷懒吗?@jbarreiros:这是一个有争议的话题。一方面,有些人喜欢像你所说的那样保持他们的历史“良好和线性”,他们会大量使用“再基础”之类的东西来实现这一点。另一方面,也有人主张这样做。谢谢Wim的回答。链接(在你上面的评论)和它链接的文章也非常有信息。@ JBReRiROS:比我的答案更好的选择。注意:WIM提出了一个可行的选择樱桃采摘,你可以考虑。
-----B--o----o---M1----o---> stable
     |          /
     |---------X   bugfix
     |          \
     \--o---o----M2----o-----> feature