Mercurial:修复早期版本中的错误有什么好处

Mercurial:修复早期版本中的错误有什么好处,mercurial,Mercurial,根据,在标题下:修复早期修订中的错误,它指出: 当您在某个早期版本中发现一个bug时,您有两个选择:要么在当前代码中修复它,要么在历史记录中返回并精确地修复代码,这将创建一个更清晰的历史记录 追溯历史如何使它更干净?它仍然会在顶端进行新的更改集 它是否与作为其父项记录的内容有关 有没有办法查看日志,并按照该顺序查看新插入的变更集 本课程的主标题为具有非线性历史的独立开发人员。在团队中工作时,这是一种良好的做法吗 我更熟悉subversion,但是如果允许您在“过去”中进行更改,那么这意味着您可以

根据,在标题下:修复早期修订中的错误,它指出:

当您在某个早期版本中发现一个bug时,您有两个选择:要么在当前代码中修复它,要么在历史记录中返回并精确地修复代码,这将创建一个更清晰的历史记录

  • 追溯历史如何使它更干净?它仍然会在顶端进行新的更改集
  • 它是否与作为其父项记录的内容有关
  • 有没有办法查看日志,并按照该顺序查看新插入的变更集
  • 本课程的主标题为具有非线性历史的独立开发人员。在团队中工作时,这是一种良好的做法吗

  • 我更熟悉subversion,但是如果允许您在“过去”中进行更改,那么这意味着您可以更改特定存储库的所有分支

    换句话说,如果您在修订版100中犯了错误,并且对代码进行了分支,那么错误将在两个分支中都存在。不必分别修复两个分支中的代码,您可以在修订版100中修复一次错误,并使其在两个分支中传播。

    1)它通过提供更接近创建错误的修复,使错误更为清晰。因此,如果在错误发生后有多个克隆,每个克隆都可以引入不包含任何与后续更改相关的代码的修复更改集。它确实创建了一个新的变更集(tip)。然后,您将希望在相关位置将该修复与所有克隆合并

    2) 对。因为您正在克隆创建bug的代码,所以修订历史直接引用bug产生的变更集,因此它有助于记录(直接而不仅仅是通过注释)变更存在的原因

    3) 变更集永远不会显示为已插入-它必须始终在树中稍后合并,就像任何其他克隆将被合并一样


    4) 我不认为这种方法偏离了任何团队方法。在任何一种情况下,您都需要与团队沟通以指明修复程序的位置,或者它将位于某个主存储库中,您可以在其中合并修复程序。我想说,这种方法适用于团队环境。

    从信息量更大的意义上说,它更干净。您将得到一个合并提交,它通过其父级向您显示错误的确切引入位置和删除位置


    它还更简洁,您将有一个只删除bug的commit,并在以后处理合并内容。也就是说,当您在最新版本的代码中修复bug时,您必须同时修复bug和处理新内容,这使得实际修复的内容变得不那么清楚。

    在subversion和mercurial中都不建议更改现有提交的修订版。Mercurial通过轻松合并分支的方式特别支持此行为。我不认为颠覆体验对这里有帮助。你说这不推荐,但你上面的帖子很有帮助。我不明白你为什么不想。我上面的帖子有什么错误吗?如果您能详细说明,这将非常有帮助。您实际上不会更改旧的提交,并且修复不会自动传播到其间的所有提交。(这无论如何都不行,因为这意味着您必须在每个步骤中处理大量的合并冲突。)您要做的是在另一个分支上修复它,然后将该分支合并回主干。更改旧的提交将意味着它们都将获得新的ID,所有编写代码的同事都必须手动切换分支。那会是一片混乱。@Debilski:没错。。。我经常这样做,我决不会改变以前的承诺:)@Ken Earley:我想你说的是“匕首修正”:我偶尔会“匕首修正”一个bug。通常,当它们是非常简单的修复时,我不介意“hg-C更新”,修复错误并返回到我所在的位置并合并。问得好!我正在使用Git(这也是可能的),但我没有想到用这种方式修复bug。