我尝试制作此处介绍的补丁。
说我有两个目录pp1(modified version)
和pp0(clean version)
我打个补丁文件,pp0.patch
用diff
命令:
diff -crB pp0 pp1 > pp0.patch
Run Code Online (Sandbox Code Playgroud)
问题是如果只有 pp1 中有一个文件,它不会包含在补丁中。如何解决它?
更新:
我首先进入pp0目录,测试补丁是否成功
patch --dry-run -p1 -i /path-to-pp0.patch
Run Code Online (Sandbox Code Playgroud)
虽然我已经添加--new-file
到diff
命令中,但pp1
结果中没有列出那些只在
更新:
我不小心修补了错误的文件,所以
diff -crb --new-file pp1 pp0 > pp0.patch
Run Code Online (Sandbox Code Playgroud)
或者
diff -crNb pp1 pp0 > pp0.patch
Run Code Online (Sandbox Code Playgroud)
会做
您应该可以使用--new-file
switch来做到这一点。取自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.
Run Code Online (Sandbox Code Playgroud)
尝试这个:
diff -crB --new-file pp0 pp1 > pp0.patch
Run Code Online (Sandbox Code Playgroud)