Linux diff and patch



Linux diff and patch
 
diff的选项挺多,但这里只介绍最常用的三个,其他的,还是看man diff吧: 
-r: 递归比较文件夹下的文件
-N: 如果某个比较的文件为不存在,则视为空文件
-u: unified,diff的结果进行格式化输出(可读性更好)
  www.2cto.com  
所以,diff的一般用法是: diff -Nur old_version new_version >> mods.diff 
 
patch使用diff文件的输出,所以两者总是配对使用。但patch不仅可以支持diff产生的输出,也可使用svn/git等工具生成的diff。 
 
patch的三个常用选项: 
-p NUM: 产生的diff文件,包含diff时使用的to-file(上面的old_version)的path,path有层级,比如:/myproject/model/people/profile.py,但这个path不总是正确,因为diff文件的位置是可以移动的,比如,在/目录,按照path去打patch没有问题,但把diff文件保存在/myproject目录下,则找不到/myproject/model/people/profile.py这个路径了。这个-p属性就是用来去掉path中斜杠(/)的数量。默认情况下,path是profile.py。-p1:myproject/model/people/profile.py。-p2:model/people/profile.py。-p3: people/profile.py。-p4: profile.py。所以patch -p0 和patch是不一样的,注意了。
-R: 即--reverse,打过patch,如果想要取消,则加上此选项
-b: 给打patch的文件进行备份,比如要对profile.py文件打patch,打完之后发现会多一个hello.py.orig文件
 
patch的一般用法: patch  -pNUM < patchfile,NUM视具体情况而定。 
 

相关内容

    暂无相关文章