1

问题描述如下:假设我有一个版本的文件列表(比如 A、B、C、D)。在下一个版本中,我有以下文件(A、E、F、G)。它们的内容有一些相似之处。后期版本的文件来自于前期版本,文件名重命名、内容增删或部分修改或不作任何改动(如A未改动)。

我从一个文件(E,第 2 版)中获取一段文本,并检查哪些文件(在第 1 版中)包含此文本块。我发现 B、C 和 D 包含文本片段。我想确定这个文本块实际上来自哪个文件(B 或 c 或 d)。(我假设 E 是第二个版本中名称更改的文件)。

由于后面的版本可能会更改、添加或删除内容,所以为了确定相似度,我使用了 LCS 算法。但我无法将文件与其以前的版本映射。我认为一种可能的方法可能是使用匹配文本块的位置信息。但这种启发式方法并不总是有效。是否有任何研究或算法可以找到这一点。任何方向都会有所帮助。提前致谢。

4

1 回答 1

0

我认为看一下 Subversion 及其跟踪版本之间文件重命名的能力可能会有所帮助。http://svnbook.red-bean.com/

它已经过试验和测试,因为它被许多开发人员使用。重命名必须通过使用颠覆工具进行,但有很多(命令行、不同操作系统的文件资源管理器集成、GUI、IDE 等等)。它还包括在目录之间移动文件,以及合并几行更改(分支)。

于 2010-03-20T21:26:44.177 回答