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 配对的东西,这样我就可以看到内容的变化,而不用关心文件被移动的事实。换句话说,一个只使用文件名来匹配文件的无路径差异

4

3 回答 3

0

我会下载两个分支并使用http://winmerge.org/之类的比较工具来比较本地目录。

于 2013-01-15T16:28:59.937 回答
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/

于 2013-01-15T19:33:28.873 回答
0

你可以试试我写的一个库。它可以比较2个文件夹的内容,给出真/假或它们之间的详细区别。(子文件夹也与其内容进行比较)

这是链接: https ://badandmadstudio.wordpress.com/projects/dircompare-java/

于 2013-09-16T13:07:09.433 回答