rebaseif mercurial 扩展在拉取时自动执行 rebase 的过程,前提是合并可以自动完成而没有冲突。(如果有需要手动解决的冲突,它不会变基,让您准备好手动合并两个分支。)当开发人员在代码的不同部分工作时,这会简化和线性化历史记录,尽管任何变基都会抛出当开发人员工作时,会删除一些有关世界状态的信息。我倾向于同意这样的论点和这个在一般情况下,rebase 不是一个好主意,但我发现 rebase-if 哲学对非冲突情况很有吸引力。我对此持谨慎态度,尽管我知道当代码的不同部分发生更改时仍然存在逻辑错误的风险(并且rebaseif 扩展的作者已经觉得这是一个坏主意。..)
我最近经历了一个复杂而痛苦的 bisect,我认为在我们的存储库中有大量的短分支合并是 bisect 没有实现其隐含的 O(lg n) 承诺的主要原因。我发现自己需要多次运行“bisect --extend”,以将范围扩展到合并之外,一次通过几个变更集,基本上使 bisect O(n)。我还发现跟踪平分线的进展情况以及了解到目前为止我获得的信息非常复杂,因为在查看存储库的图表时我无法遵循分支。
是否有更好的方法来使用 bisect(以及查看和理解修订历史),或者如果我们在开发中更多地使用 rebase,这个过程会更顺利,我是对的。或者,您能否帮助我更具体地理解在非冲突情况下使用 rebase 可能会出现什么问题:是否足以引起应该避免的问题?
因为我认为 rebaseif 匹配更典型的 git 工作流程,所以我更一般地标记了这个(不仅仅是 mercurial):git 用户可能已经看到了陷阱。