patch 修补文件(给文件打补丁)

patch 修补文件(给文件打补丁)

功能:修补文件。使用补丁文件,对源文件进行更改。更改方式根据参数来设定。
倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行。如果配合修补文件的方式则能一次修补大批文件。

语法:patch   [OPTION]   [ORIGFILE]  [PATCHFILE]

 

输入选项
-p NUM--strip=NUM去除相对路径层次的数目
-F LINES--fuzz LINES设置监别列数
-l--ignore-whitespace忽略修补数据与输入数据的跳格,空格字符
-c--context把修补数据解译成关联性的差异
-e--ed把修补数据解译成ed指令可用的叙述文件
-n--normal把修补数据解译成一般性的差异
-u--unified把修补数据解译成一致化的差异
-N--forward忽略修补的数据较原始文件的版本更旧,或该版本的修补数据已使用过
-R--reverse假设修补数据是由新旧文件交换位置而产生
-i PATCHFILE--input=PATCHFILE读取指定的修补文件
 
输出选项
-o FILE--output=FILE设置输出文件的名称,修补过的文件会以该名称存放
-r FILE--reject-file=FILEOutput rejects to FILE
-D NAME--ifdef=NAME用指定的符号把改变的地方标示出来
-m--mergeMerge using conflict markers instead of creating reject files
-E--remove-empty-files若修补过后输出的文件其内容是一片空白,则移除该文件
-Z--set-utc把修补过的文件更改,存取时间设为UTC
-T--set-time此参数的效果和指定"-Z"参数类似,但以本地时间为主
 --quoting-style=WORD使用WORD引述类型显示项目名称,可设定值有literal,shell,shell-always,c,escape
 
备份和版本控制选项
-b--backup备份每一个原始文件
 --backup-if-mismatch在修补数据不完全吻合,且没有刻意指定要备份文件时,才备份文件
 --no-backup-if-mismatch在修补数据不完全吻合,且没有刻意指定要备份文件时,不要备份文件
-V STYLE--version-control=STYLE用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用"-z"参数变更,
当使用"-V"参数指定不同备份方式时,也会产生不同字尾的备份字符串
-B PREFIX--prefix=PREFIX设置文件备份时,附加在文件名称前面的字首字符串,该字符串可以是路径名称
-Y PREFIX--basename-prefix=PREFIX设置文件备份时,附加在文件基本名称开头的字首字符串
-z SUFFIX--suffix=SUFFIX此参数的效果和指定"-B"参数类似,差别在于修补作业使用的路径与文件名若为src/linux/fs/super.c,
加上"backup/"字符串后,文件super.c会备份于/src/linux/fs/backup目录里
-g NUM--get=NUM设置以RSC或SCCS控制修补作业
 
其他选项
-t--batch自动略过错误,不询问任何问题
-f--force此参数的效果和指定"-t"参数类似,但会假设修补数据的版本为新版本
-s--quiet或--silent不显示指令执行过程,除非发生错误
 --verbose显示详细的过程信息
 --dry-run实际上不改变任何文件;演示讲会发生什么
 --posix符合POSIX标准
-d DIR--directory=DIR先改变工作目录到指定的目录
 --reject-format=FORMATCreate 'context' or 'unified' rejects
 --binary以二进制方式读写数据
 --read-only=BEHAVIOR如何处理只读输入文件:“忽视”,他们是只读的,“警告”(默认),或“失败”

 

  • patch 命令(默认)使用从标准输入读入的源文件 < PATCHFILE ,但是使用 -i  PATCHFILE 设置。
  • 源文件包含由 diff 命令产生的差别列表(或者 diff 列表)。差异列表是比较两个文件和构建关于如何纠正差别的指示信息的结果。
  • 差异列表有三种格式:正常、上下文或者是 ed 编辑器风格。patch 命令确定差异列表格式,除非被 -c、-e 或 -n 标志否决。
  • 默认,ORIGFILE 被PATCHFILE 替换。若ORIGFILE(原始文件)不存在时,PATCHFILE(补丁文件)根据差别列表,创建 ORIGFILE 文件。
  • 指定 -b 标志时,ORIGFILE(原始文件)会备份在自身的文件中,只是在文件名后附加了后缀 .orig。使用 -o 标志也可以指定输出的目的地。

patch常用选项:
-r 是一个递归选项,设置了这个选项,diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件。
-N 选项确保补丁文件将正确地处理已经创建或删除文件的情况。
-u 选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些。
-p0 选项从当前目录查找目的文件(夹)(直接使用补丁文件里面指定的路径)
-p1 选项忽略掉第一层目录,从当前目录查找(去掉补丁文件指定路径最左的第1个'/'及前面所有内容)。
-E  选项说明如果发现了空文件,那么就删除它
-R  选项说明在补丁文件中的“新”文件和“旧”文件现在要调换过来了(实际上就是给新版本打补丁,让它变成老版本)

 

svn生成补丁文件和打补丁文件

生成补丁文件: 
svn diff > patchFile  整个工程的变动生成补丁 
或 svn diff file > patchFile  某个文件单独变动的补丁 
 
svn回滚: 
svn revert FILE   单个文件回滚 
svn revert DIR --depth=infinity   整个目录进行递归回滚 
 
打patch: 
patch -p0 < test.patch   -p0 选项要从当前目录查找目的文件 
 
patch -p1 < test.patch  -p1 选项要从当前目录查找目的文件,不包含patch中的最上级目录 
例如两个版本以a,b开头,而a,b并不是真正有效地代码路径,则这时候需要使用"-p1"参数。 
a/src/... 
b/src/...
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值