diff制作patch补丁
对于源代码项目软件移植的时候,会出现各种各样的问题,系统环境不匹配,版本升级,环境依赖等问题,需要制作补丁,打在源代码项目中,修复bug问题。
diff命令
使用diff命令制作patch补丁 ,diff命令会对比前后差异,生成path补丁,当需要使用patch补丁,直接使用patch命令给项目打上补丁就可以了。打补丁可以在不直接修改程序项目的方式修改源代码,patch补丁只会记录改动的部分,如果补丁不合适,直接执行patch命令撤销就可以了,源代码就恢复到之前未打补丁的状态。
制作过程
创建dir目录,把test.c源代码文件放在dir/dir1/dir2目录下,使用cp -rf 命令复制dir目录变成新目录dir_new,然后修改dir_new/dir1/dir2目录下的test.c源代码文件,增加printf(“changed\n”);代码行。进行模拟,dir目录是旧的项目工程,dir_new目录是更改后的新的项目工程。最后使用diff -Naur dir/ dir_new/ > test.patch生成patch补丁。
patch -p0 < test.patch
命令就可以在修改旧项目里的test.c源代码文件,patch -RE -p0 < test.patch
命令就可以恢复源代码。整个过程只是patch补丁在改变,dir模拟项目的内容没有发生改变,保证了原项目的完整性。
注意:
-p0后面的数字是表示忽略的目录数,在不同的目录制作的patch补丁和p后面的数字是不一样的。如果数字是1就在patch补丁文件的头部—和+++后面的路径减掉1级目录就行了。
小技巧:
先使用xzcat对*.xz文件进行解压,再使用patch对响应的程序软件包进行打补丁。
xzcat *.xz | patch -Np1 -i -