如何将新文件包含到补丁中


9

我尝试制作一个此处介绍的补丁。
说我有两个目录,pp1(modified version)然后用以下命令pp0(clean version)制作一个补丁文件:pp0.patchdiff

 diff -crB pp0 pp1 > pp0.patch

问题是,如果仅在pp1中有一个文件,它将不会包含在补丁中。如何解决呢?

更新
我首先进入pp0目录,并测试补丁是否成功

  patch --dry-run -p1 -i /path-to-pp0.patch

尽管我已经添加--new-filediff命令,但pp1结果中未列出仅那些

更新
我不小心修补了错误的文件,因此

  diff -crb --new-file pp1 pp0 > pp0.patch

要么

  diff -crNb pp1 pp0 > pp0.patch

会做

Answers:


9

您应该能够使用--new-file开关执行此操作。取自diff手册页

 --new-file
          In directory comparison, if a file is found in only  one  direc-
          tory, treat it as present but empty in the other directory.

尝试这个:

diff -crB --new-file pp0 pp1 > pp0.patch

我不知道我是否已正确修补它,但不包括新文件
manuzhang 2012年

我的道歉,有效
manuzhang 2012年

3

即时答案:diff -Npootzko解释。您会发现许多补丁是由创建的diff -urN

什么可以使您的生活变得更好:开始使用版本控制工具。如果您一无所知,请从三个主要的分布式修订控制系统之一BazaarGitMercurial开始。签入干净版本,进行工作,根据需要多次签入您的工作,然后向版本控制系统询问干净版本与您的工作之间的区别。


thx,希望我能在现实生活中遇到一个错误并回到过去:)
manuzhang 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.