如何打补丁

Diff patch

# mkdir -pv a/c

# vim a/c/1

Wolaile

# cp -r a b

# vim b/c/1

Wolaile

Wozoule

# diff -Nur a b

diff -Nur a/c/1 b/c/1

--- a/c/12013-09-30 11:17:27.974856750 +0800

+++ b/c/12013-09-30 11:17:46.420855603 +0800

@@ -1 +1,2 @@

wolaile

+wozoule

参数N表示如果某个文件仅在一个目录中出现,则假定其在另一个目录中为空文件;u表示unified格式,r表示在目录中嵌套使用。

# diff -Nur a b > /tmp/diff.patch

# patch -p0 < /tmp/diff.patch

patching file a/c/1 打补丁成功

# patch -p0 -R < /tmp/diff.patch 注释:-R 表示退回一步

patching file a/c/1

# cd a

# patch -p1 < /tmp/diff.patch

patching file c/1

# patch -p1 -R < /tmp/diff.patch 再退回一步

patching file c/1

# cd c

# patch -p2 < /tmp/diff.patch

patching file 1

注释:-p后边的数字在不停的变化,补丁却依旧可以打成功,结论:数字与“<”后边的目录没有关系,与当前所在的目录有关,即pwd命令得到的结果。这也要看diff.patch补丁文件是为谁创建的,在谁之上打补丁就是-p0,更进一步,如果被打补丁的是一个目录,进到目录里面,就是-p1,依次类推。


你可能感兴趣的:(打补丁)