2013-01-15 44 views
0

我使用cvs(而不是选择),我通过在v2分支中创建一个新的包层次结构来重构项目。现在我需要将分支v1中发生的更改合并到分支v2中。但是因为文件的路径改变了,我不能做一个正常的比较。有没有办法在eclipse(或任何其他工具)中做到这一点?我通常知道,只有通过使用文件名才能确定文件是否具有相同的来源;这对我来说不是问题,因为所有的文件名在我的情况下都是唯一的。我知道我可以去手动选择这两个文件并做一个比较,但是我有太多的类来使这可行。我在找文件的自动配对,当一个文件已经改变该工具检测到差异就像自动比较不同文件夹中的文件

没有人有任何其他建议做一个蹩脚的VCS这样的合并?

更新: 的我做可能会使它更清晰

v1 
Folder1 
    file1 
    file2 
    file3 
    file4 
    file5 

v2 
FolderA 
    file1 
    FolderA1 
     file2 
     FolderA11 
      file3 
    FolderA2 
     file4 
FolderB 
    file5 

因此,可以看出改变一些解释,有一个在运动无图案。它只是扁平层次结构之前的全新层次结构。这意味着我不能做文件夹差异。我想要的是将v1:folder1/file4与v2:FolderA/FolderA2/file4配对,以便我可以在不关心文件被移动的情况下看到内容的变化。换句话说,只是用文件名的路径无差异以匹配文件

+0

使用bash脚本('LS -lR | grep的....')你可以做的魔力。要在Windows上获得Bash shell,请使用'Cygwin'。 – gaborsch

+0

这是迄今为止我最好的想法:编写一个bash脚本,但我想用'find'来匹配具有相同名称的两个文件,然后比较。唯一的问题是,这将显示差异,但不会让我容易合并更改 – Hilikus

回答

0

试试这个shell脚本片段:

ls -R /path/to/source1 | grep '.java\|.js\|.css' | grep -v ':$' >allfiles.txt 
ls -R /path/to/source2 | grep '.java\|.js\|.css' | grep -v ':$' >>allfiles.txt 
cat allfiles.txt | sort | uniq -d > same_files.txt 
cat allfiles.txt | sort | uniq -u > different_files.txt 

# This will compare the same files one-by-one 
for i in `cat same_files.txt`; do 
    FILE1=`find /path/to/source1 -name $i`; 
    FILE2=`find /path/to/source2 -name $i`; 
    diff -q $FILE1 $FILE2 
done 

诀窍是uniq命令,其特殊的开关。 -d只留下重复项,-u整理重复项。

在Windows上运行,使用Cygwinhttp://www.cygwin.com/

0

我下载两个分支,并使用比较工具,如http://winmerge.org/比较本地目录。

+1

由于内容不同,我无法执行dir-for-dir比较。我将用示例更新问题 – Hilikus

+0

也许可以将所有文件复制到同一文件夹,每个分支的一个文件夹,然后在那里进行比较。 (你说文件名是不同的,对吧?) – richardtz

相关问题