Articles of diff

通过文件描述符(fd)来比较两个文件,而不是文件名

有没有什么办法可以在Linux中用c来生成一个存储在内存中的两个文件的diff / patch,使用一个通用的格式(比如统一的diff,就像命令行diff工具一样)? 我正在一个系统中,我在内存中生成两个文本文件,并没有外部存储可用,或期望的。 我需要创build两个文件的逐行比较,因为他们是mmap ,他们没有文件名,阻止我简单地调用system("diff file1.txt file2.txt") 。 我有文件描述符( fd s)可供使用,这是我唯一的数据入口点。 有什么办法通过比较两个打开的文件来生成差异/补丁? 如果实施是MIT / BSD许可的(即:非GPL),则更好。 谢谢。

diff文件只比较每行的前n个字符

我有2个文件。 让我们称之为md5s1.txt和md5s2.txt。 两者都包含a的输出 find -type f -print0 | xargs -0 md5sum | sort > md5s.txt 命令在不同的目录中。 许多文件被重新命名,但内容保持不变。 因此,他们应该有相同的md5sum。 我想生成一个差异 diff md5s1.txt md5s2.txt 但它应该只比较每行的前32个字符,即只有md5sum,而不是文件名。 等于md5sum的行应该被认为是相等的。 输出应该是正常的diff格式。

如何忽略差异命令的一些差异?

diff有一个选项-I regexp ,它忽略只插入或删除与给定正则expression式匹配的行的更改。 我需要一个类似于这种情况,当两行之间的变化(而不是插入或删除行)。 例如,对于给定的X和Y ,我想忽略"abXd"和"abYd"之间的所有差异。 似乎diff没有这样的能力。 有什么合适的替代diff ?

找不到列表中的文件

我有一个file.lst文件的列表。 现在,我想查找目录dir所有文件,除了file.lst文件中的文件之外,它们都是7天以前的文件。 如何修改find​​命令或从结果中删除file.lst中的所有条目? 例: file.lst : a b c 执行: find -mtime +7 -print > found.lst found.lst : a d e 所以我期望的是: d e

GNU差异的百分比值

使用diff来显示两个文件之间的百分比差异的好方法是什么? 例如,如果文件有100行,副本有15行,那么差异百分比就是15%。

如何将Araxis设置为MSYS git的diff / merge工具?

我试图使用Araxis合并作为我的MSYSGit的差异/合并工具。 我在网上find了一些资源: 在Araxis网站上 ,他们提到了一个“简单”的方法,但是这意味着一个不属于我的发行版的可执行文件(araxisgitdiff.exe和araxisgitmerge.exe)。 我也在gitguru中find了一些信息,但是实际的信息是:Araxis最好是稀疏的,而且我什么也做不了。 最后,有一些旧的计算器上的信息 ,但build议的方法不适合我。 这个特定的信息是面向OS X.我尽我所能“翻译”到Windows,但没有成功: 我创build了/bin/git-diff-driver.sh #!/bin/sh "/c/Program Files/Araxis/Araxis Merge/compare.exe" -title1:"$1 (repo version)" -title2:"$1 " -max "$2" "$5" 并编辑gitconfig [merge] tool = araxismerge [mergetool "araxismerge"] cmd = "/c/Program Files/Araxis/Araxis Merge/compare.exe" -3 -merge -wait $LOCAL $BASE $REMOTE $MERGED [diff] external = "/bin/git-diff-driver.sh" 我得到的唯一结果是: $ git diff HEAD ^ HEAD 外部差异死亡,停在PowerEditor / src […]

在Mercurial中获取可读的差异显示在Unicode文件(MS Windows)

我试图在Mercurial存储库中存储一些Windows PowerShell脚本。 看来PowerShell编辑器喜欢将文件保存为UTF-16 Unicode。 这意味着有很多\0字节,这是Mercurial用来区分“文本”和“二进制”文件的。 我知道这对于Mercurial如何存储数据没有任何影响,但是这意味着它会显示二进制差异,这是难以阅读的。 有没有办法告诉Mercurial这些确实是文本文件? 据推测,我需要说服Mercurial使用一个外部Unicode识别diff程序的特定文件types。

外部的git difftool不能在windows上工作

我为很多人苦苦挣扎,读了几乎所有的“git”,“diff”等题材,尝试了上百种不同的解决scheme,但都没有成功。 我试图设置总和外部difftool(梅尔德,p4merge)作为我的混帐工具,但混帐忽略这个选项。 这是我的git config –global 。 [alias] st = status co = checkout ci = commit [diff] tool = p4merge [difftool "p4merge"] cmd = p4merge.exe $LOCAL $REMOTE [difftool] prompt = false [merge] tool = p4merge [mergetool "p4merge"] cmd = p4merge.exe $BASE $LOCAL $REMOTE $MERGED [mergetool] prompt = false trustExitCode = false keepBackup = false Mergetool命令工作正常,但difftool被忽略,git始终始终是build-in […]