如何使用diff递归创建补丁文件

Ony*_*nyx 4 php diff

我在Linux上,致力于分支PHP项目.我想创建一个我已经完成的工作的补丁文件,可以应用于最新的父代码.原始文件夹和新代码文件夹都是很多子目录(因此需要递归).

出于某种原因,我这样做:

diff -ur folder1 folder2 > newcode.patch
Run Code Online (Sandbox Code Playgroud)

我没有设法获得包含所有新文件的补丁文件,它甚至不包含一些更深层次的文件更改(大约3级以上).

任何想法如何去做?我看过Meld和Kdiff3 ......但他们似乎也没做我想做的事.

kat*_*uff 9

我怀疑你有一个类似的目录结构:

folder1/
  text.txt
  level1/
    text1.txt
    level2/
      text2.txt
      level3/
        text3.txt

folder2
  text.txt
  level1/
    text1.txt
    level2/
      text2.txt
      anewdirectory/
        newtext.txt
      level3/
        text3.txt
        newfiled3.txt
Run Code Online (Sandbox Code Playgroud)

在这种情况下,diff将忽略该文件newtext.txtanewdirectory/.它可能也没有拿起newfiled3.txt任何一个文本.相反,它报告的内容如下:

..
Only in folder2/level1/level2/ : anewdirectory
Only in folder2/level1/level2/level3/ : newfiled3.txt
..
Run Code Online (Sandbox Code Playgroud)

这是你看到的症状吗?
试试:

diff -urBNs folder1/ folder2/ > code.patch
Run Code Online (Sandbox Code Playgroud)