2012-07-06 67 views
3

我在“修改的目录”(在第3个子级文件夹中)中添加了一个新文件,当我尝试使用以下命令生成修补程序文件时,看起来diff命令忽略新文件:diff命令忽略新目录中的新文件

diff –ur "original directory" "modified directory" > version1.patch 

我感谢您的帮助..

回答

2

您还需要-N标志。从man diff

-N --new-file 
      Treat absent files as empty. 

当生成补丁, “标准” 差异标志-Npur。你已经发现你为什么需要-N; -p使修补程序更易于人类阅读。

+0

感谢您的意见。 -Npur为我工作,现在我可以看到补丁文件中的.c文件更改。但是,当我尝试使用以下命令“patch -p1 <../ patch-x.y.z(补丁文件)”修补它时,“我没有看到在相应的子目录中创建了这个新的C文件。我在这里错过了什么? – user1427180 2012-07-06 21:40:19

+0

@ user1427180你没有提供足够的细节来回答你的第二个问题,但是没有:你没有错过任何东西,它应该工作,并且最有可能*工作;你可能只是看着错误的文件。 – 2012-07-07 03:27:57

+0

我的意思是:我在其中一个子目录中创建了一个新的.c文件,我可以在修补程序文件中看到这些更改,并且当我尝试重新应用基本版本的修补程序时,我仍然没有看到“patch”命令没有在相应的子目录(它存在于修改的目录中)中创建该文件。 – user1427180 2012-07-09 14:50:28

-1

用这个命令试试,

差异-RUN “原​​目录”, “修改后的目录”> version.patch

+1

哪个版本的diff能够理解'-R'标志,它是什么意思? – 2012-07-09 17:34:32

+0

GNU diff 3.3(2013)没有'-R'选项。 – gioele 2014-09-22 09:50:34