2010-03-20 98 views
1

问题描述如下: 假设我有一个版本的文件列表(比如说A,B,C,D)。在下一个版本中,我有以下文件(A,E,F,G)。他们的内容有一些相似之处。更新版本中的文件来自以前的版本,通过文件名重命名,内容添加,删除或部分修改或不作任何更改(例如,A未更改)。如何在一个版本中确定文件的文本块来自以前版本中的哪个文件?

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

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

回答

0

我认为看看Subversion及其跟踪版本之间文件重命名的功能可能会有帮助。​​

它被尝试和测试,因为它被许多开发者使用。重命名必须通过使用颠覆工具来实现,但有很多(命令行,不同操作系统,图形用户界面,IDE的文件资源管理器集成,您可以将其命名)。它还包括在目录之间移动文件,以及合并多行更改(分支)。

相关问题