有没有一种不会出错的diff算法?一个确切知道哪些字母在所有情况下被删除,哪些字母被插入的人?
如果不存在,是不可能还是太难了?
发布于 2012-03-19 03:51:20
这是不可能的,因为在一般情况下,有多个编辑序列可以将您从原始版本带到最终版本。
发布于 2012-03-19 03:57:49
一种diff算法,查看原始文本和新文本,不能区分编辑的真实顺序。所以它不能知道你是把ABC从一个地方移到另一个地方,还是把它从一个地方删除然后插入另一个地方。在这种情况下,传统的diff只会告诉你,某个东西在一个地方被删除了,而另一个东西(它甚至不知道它是一样的)被插入到了其他地方。
人们可以构建一个工具来对一组合理的编辑进行有根据的猜测。我们的Smart Differencer利用代码结构和代码片段的相似性来猜测代码块被移动了,而不是插入/删除,即使面对更改的变量名也是如此。
发布于 2012-03-19 04:00:29
这是一个定义问题。
是:总是有可能找到两个文件之间的完美区别,其含义是:两者之间的不同之处。
不:例如,你可能想知道你删除了哪个{,这可能太复杂了,因为没有回忆起后来发生了什么。
https://stackoverflow.com/questions/9761675
复制相似问题