1

我正在比较两个几乎相同的文件夹,其中包括应该忽略的隐藏 .svn 文件夹,并且我想不断快速比较这些文件夹,因为一些文件被修补以比较差异,而无需再次检查未更改的匹配文件。

编辑:因为有这么多的选择,我对一个明显利用先前比较知识的解决方案感兴趣,因为在进行重复比较时,任何其他解决方案都不是真正可行的。

4

6 回答 6

8

如果你愿意花一点钱,Beyond Compare 是一个非常强大的 diffing 工具,可以进行基于文件夹的 diffing。

超越比较

于 2009-01-20T21:40:56.293 回答
7

我个人使用WinMerge并发现它非常有用。它具有排除 svn 文件的过滤器。在 linux 下我更喜欢Meld

于 2009-01-20T21:39:47.967 回答
4

一种选择是使用rsync. 就像是:

rsync -n -r -v -C dir_a dir_b

-n选项会进行试运行,因此不会修改任何文件。 -r进行递归比较。可以选择使用 开启详细模式-v。(您可以使用-i来逐项列出更改而不是-v。)忽略通常被忽略的文件,例如.svn/使用-C

diff当我阅读手册页时,这应该比简单的要快rsync

Rsync 使用“快速检查”算法(默认情况下)查找需要传输的文件,该算法查找大小或上次修改时间已更改的文件。当快速检查指示文件的数据不需要更新时,直接在目标文件上进行其他保留属性的任何更改(根据选项的要求)。

由于“快速检查”算法不直接查看文件内容,它可能会被愚弄。在这种情况下,-c可能需要执行校验和的选项。它很可能比普通的要快diff

此外,如果您计划在某个时候同步目录,这也是该工作的好工具。

于 2009-01-20T21:43:38.443 回答
1

并非万无一失,但您可以比较时间戳。

于 2009-01-20T21:41:39.180 回答
1

使用总指挥官!所有很酷的开发人员都使用它:)

于 2009-01-20T21:42:32.330 回答
1

If you are on linux or some variant, you should be able to do:

prompt$ diff -r dir1 dir2 --exclude=.svn

The -r forces recursive lookups. There are a bunch of switches to ignore stuff like whitespace etc.

于 2009-01-20T21:46:45.487 回答