(0)用SVN管理的代码,在调试的过程中代码会有许多的更改,如增加了一些打印信息、设置了调试参数等等。而有一些情况我们要用到没有被更改的源码、或者去掉那些打印的代码来编译软件。备份那些修改的文件、恢复,或者重新下一份代码,然后合入需要的改动,这是显而易见的办法。但是改动点很多、下载代码又不方便的话,这种办法就比较麻烦了。
(0) 而使用打patch的方法,就能够快速的实现改动点的备份、还原代码、重新导入备份的改动点,具体操作步骤如下:
1、将改动点重定向到一个 .patch 文件
svn diff xxx > xxx.patch
(svn diff * > xxx.patch ,全部改动点)
2、将修改的部分还原至版本库的版本
patch -p0 -R < xxx.patch (p0,当前路径 )(-R,revert;)
3、重新导入备份的改动点
patch -p0 < xxx.patch
4、注意patch的路径
vim xxx.patch ,打开生成的xxx.patch,
“Index”行显示的路径为 被patch 的文件(xxx)的路径,-p参数用来定位xxx所在的位置,
-p0 表示从当前所在目录搜索,-p1 表示从当前路径的上一级目录搜索,以此类推。
如,当前目录为:~/prod/ucloud# ,xx.patch 在这个目录下存在,
输入 patch -p0 < xxx.patch , 路径错误出现如下信息:
输入 patch -p2 < xxx.patch ,则从当前目录向上两级查找,即从 “ ~/ ”下搜索 prod/ucloud/src/biz_rub.c,patch成功。