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
Mercurial 您使用“新”的体验是什么;hg rebase“;指挥部?_Mercurial - Fatal编程技术网

Mercurial 您使用“新”的体验是什么;hg rebase“;指挥部?

Mercurial 您使用“新”的体验是什么;hg rebase“;指挥部?,mercurial,Mercurial,到目前为止,“hg rebase”对您有何影响?你有没有发现任何bug或陷阱?在什么情况下,它取代或补充了mq?与mq(Mercurial Queues)相比,最大的优势在于,当您将排队的修补程序推送到已更改的底层时,最终会得到.rej文件,并且必须手动修复修补程序。使用rebase,您将获得一个合并,并启动标准的合并解决工具。rebase在简单的情况下非常好(没有或很少有合并冲突),但是如果您有很多合并冲突,与常规的合并+提交相比,它可能更麻烦: 重基更改提交&更改历史记录,默认情况下删除原始

到目前为止,“hg rebase”对您有何影响?你有没有发现任何bug或陷阱?在什么情况下,它取代或补充了mq?

与mq(Mercurial Queues)相比,最大的优势在于,当您将排队的修补程序推送到已更改的底层时,最终会得到.rej文件,并且必须手动修复修补程序。使用rebase,您将获得一个合并,并启动标准的合并解决工具。

rebase在简单的情况下非常好(没有或很少有合并冲突),但是如果您有很多合并冲突,与常规的合并+提交相比,它可能更麻烦:

重基更改提交&更改历史记录,默认情况下删除原始提交。如果它们在不好的时候击中你,这会产生很多影响:

  • 无法看到您如何解决冲突。(即,原始提交和重新基础之间的差异,除非您选择保留它们并在推送之前手动剥离它们)
  • 无法在提交之前测试每个重定基调的修订合并ok、编译并运行ok。重新设置基础,提交更改。(与上述相同的例外情况)
  • 如果您真的在做分布式工作,并且从许多来源共享/拉取,那么您必须非常小心,不要共享任何您打算重新设置基础的提交
  • 此外,如果在上面的场景中,您意外地重新基址,然后从某人那里提取这些预重新基址提交,那么您将获得两组提交,并且需要“hg剥离”其中一组。(我没有尝试在这里合并。)

问题在于,rebase编辑历史。这就是SVN在“更新”中所做的。因此,这肯定是您可以使用的,但是如果您有许多未完成的提交,并且预期会有许多冲突,我建议您使用合并来代替。

我发现指向重基分支的标记存在问题

。hgtags@XXXXXXXXXXXX,第2行:标记“XXX”表示未知节点


似乎标记没有正确转换。

这可能与已“擦除”的提交有关。请参阅第一个答案。如果您只允许在没有冲突的情况下进行重新基准,这些问题会存在吗?也就是说,如果你总是使用hg-rebase——放弃而不是继续,如果有选择的话,然后返回并合并,但是如果你在没有冲突的情况下让rebase继续呢?@JoshuaGoldberg:是的!因为文件中没有冲突并不意味着东西在合并后工作。更改相互依赖的不同文件仍然会导致问题,并且以后可能很难检测到。我已经编写了一个扩展(Rebeseif),它可以自动执行您的建议,但是由于它不能解决根本问题,所以我不再使用它。一些来到Mercurial的人非常喜欢它,但是它提供了一种虚假的安全感,所以如果你学会喜欢合并,就更容易了。