44

我有这样的东西

src/sim/simulate.cc
41d40
< #include "mem/mem-interface.h"
90,91d88
<             dram_print_stats_common(curTick/500);
<
src/mem/physical.hh
52d51
<   public:
55,56d53
<       public:
<
58a56,57
>       public:
>
61,62c60,61
<         virtual bool recvTiming(PacketPtr pkt); //baoyg
<
---

我相信这是使用源树中的 diff 命令创建的。我想要的是使用该输出创建补丁,并将相同的更改应用于我的源代码树。

4

5 回答 5

77

我相信这diff -u oldfile newfile > a.patch是用来创建补丁文件的,尽管也可能会加入其他一些开关(-N?)。

编辑:好的,4年后,终于要解释开关的含义了:

-u创建统一差异。统一差异是补丁程序期望作为输入获得的差异类型。您还可以在u(min 3, default 3) 之后指定一个数字以增加输出的行数。这是为了以防 3 行不够独特,无法仅确定程序中的一个位置。

-N将缺少的文件视为空文件,这意味着如果其中一个文件为空(或参见下一点),它将产生大量附加内容。

此外,newfileandoldfile都可以是目录而不是单个文件。您可能希望此-r参数递归任何子目录。

于 2009-01-12T22:21:14.327 回答
17

如果你想获得与 SVN 或 git diff 相同的补丁输出,给定两个不同的文件或文件夹:

diff -Naur file1.cpp file2.cpp
于 2009-01-12T22:41:54.190 回答
3

你所拥有的是一个非统一的差异。patch 可以读取它,但无法进行上下文匹配并且更容易出错。

于 2009-01-12T22:22:18.910 回答
2

一个(部分)补丁文件,尽管如果他们为您提供统一的差异输出会更好。

该补丁的主要问题是它没有提及正在修改哪些文件,并且由于没有提供上下文,因此文件必须是准确的,补丁将无法允许对文件进行细微更改。

于 2009-01-12T22:37:23.310 回答
0

test.patch将原始帖子中的差异复制到名为然后运行的补丁文件中

patch <original file> test.patch

@Sparr 和 @Arafangion 指出,如果您拥有用于创建原始差异的确切原始文件,则此方法效果最佳。

于 2019-10-03T20:53:12.190 回答