使用diff的输出来创建补丁

时间:2009-01-12 22:14:36

标签: diff patch

我有类似的东西

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命令创建的。我想要的是使用该输出创建补丁,并将相同的更改应用于我的源树。

5 个答案:

答案 0 :(得分:69)

我相信diff -u oldfile newfile > a.patch用于创建补丁文件,虽然也可以投入其他一些切换(-N?)。

编辑:好的,4年后,最后解释这些开关的含义:

-u创建Unified差异。统一差异是补丁程序期望作为输入获得的那种差异。您还可以在u(最小3,默认3)之后指定一个数字,以增加输出的行数。这是因为3行不够独特,无法精确定位程序中的一个点。

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

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

答案 1 :(得分:14)

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

  

diff -Naur file1.cpp file2.cpp

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

该补丁的主要问题是它没有提到正在修改哪些文件,并且由于没有提供上下文,文件必须完全,补丁将无法允许文件中的细微变化。

答案 4 :(得分:0)

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

patch <original file> test.patch

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