为什么我的补丁以二进制格式发布?

右旋糖原

我将两个目录分别为220和sue,如下所示:

diff -r 220 sue > diff.txt

此后目录如下:

$ ls -al
total 20
drwxrwx---+ 1 Administrators Domain Users     0 Jun 24 10:44 .
drwxrwx---+ 1 SYSTEM         SYSTEM           0 Jun 24 09:52 ..
drwxrwx---+ 1 Administrators Domain Users     0 Jun 24 09:54 220
-rw-rwxr--+ 1 jempty         Domain Users 15463 Jun 24 10:44 diff.txt
drwxrwx---+ 1 Administrators Domain Users     0 Jun 24 09:55 sue

确认diff.txt是如下文本:

$ file diff.txt
diff.txt: HTML document, ASCII text, with very long lines, with CRLF, LF line terminators

上面的内容主要是为了证明我可以使用diff并看到没有太多差异。

然后按照https://docs.moodle.org/dev/How_to_create_a_patch的建议创建补丁文件

$ diff -Naur 220 sue > patch.txt

目录中的结果如下所示:

$ ls -al
total 133836
drwxrwx---+ 1 Administrators Domain Users         0 Jun 24 10:57 .
drwxrwx---+ 1 SYSTEM         SYSTEM               0 Jun 24 09:52 ..
drwxrwx---+ 1 Administrators Domain Users         0 Jun 24 09:54 220
-rw-rwxr--+ 1 jempty         Domain Users     15463 Jun 24 10:44 diff.txt
-rw-rwxr--+ 1 jempty         Domain Users 137024100 Jun 24 10:57 patch.txt
drwxrwx---+ 1 Administrators Domain Users         0 Jun 24 09:55 sue

如您所见,patch.txt文件非常庞大,事实证明它是二进制文件:

$ file patch.txt
patch.txt: data

我应该使用patch命令而不是diff

詹姆斯·斯诺格

您可以在220sue或两者中都有二进制文件(程序,DLL,数据文件等)

第一个命令(diff -r)识别出某些文件是二进制文件,在这种情况下,diff将仅打印一条消息,说明它们是不同的。例如,如果两个220sue有一个二进制文件foo.dat在其中,你会期望的输出是这样的:

Binary files 220/foo.dat and sue/foo.dat differ

第二个命令具有-a标志,该标志指示diff将所有文件无条件地视为纯文本,因此它将比较和打印220/foo.dat之间的差异的原始二进制内容sue/foo.dat由于diff逐行比较,并且二进制文件通常很少有换行符,因此即使输出的文件相对较小,比较并显示在输出中的行也将相当大。

为了减少diff的输出大小,请不要使用-a标志:

$ diff -Nur 220 sue > patch.txt

如果您不关心二进制文件之间的差异,则可以过滤输出以排除它们:

$ diff -Nur 220 sue | grep -v '^Binary files.*differ' > patch.txt

要回答您的最后一个问题,patch是的反义词diff,因此您将不在patch这里使用您用于diff查找文件之间的差异,并patch用于将diff的输出中的差异应用于这些文件。当提及的输出时,这些术语可以互换使用diff

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我的十进制到二进制程序以表格式向后返回值?

为什么我不能在C#中将对象序列化为二进制格式?

透明的“ symlink +二进制补丁”

为什么从2.6开始,LibreSSL停止发布Windows二进制文件?

为什么可执行文件需要二进制格式规范?

为什么“二进制文件”不在原始二进制文件中?

为什么我必须使用ld链接我的二进制文件

我不明白为什么我的二进制搜索代码显示分段错误

如果我自己构建一个OpenDJ二进制文件与VS Forgerock Enterprise发布的二进制文件有什么区别?

表示日期的二进制格式是什么?

为什么我的系统只在 /snap 中查找二进制文件?

为什么git认为我的.sql文件是二进制文件?

为什么我的二进制搜索陷入无限循环?

为什么我不能遍历二进制多行读取?

为什么我不能将二进制文件的输出重定向到文件?

通过 docker 使用 postgres 时,我应该为什么设置二进制路径?

为什么编译后我们不能理解二进制文件的内容?

为什么我在Keras二进制分类模型中获得零精度?

为什么我的二进制搜索树无效删除功能无法正常工作?

为什么我的文本文件比二进制文件大?

为什么在实践中我的二进制堆插入行为如此?

为什么我的二进制到英语代码不起作用?

为什么我会执行二进制文件错误?

为什么我的二进制搜索实现效率很低?

为什么我的递归二进制搜索函数不返回任何内容?

为什么我不能从/ home路径运行二进制文件

为什么我不能对此二进制图像进行斑点检测

为什么我不能正确地以二进制形式打印数字?

为什么我们通过堆而不是二进制搜索树进行排序?