patch: 在工作副本应用一个补丁。

用法:

patch PATCHFILE [PATCHFILE]

PATCHFILE 中的统一差异格式补丁应用于工作副本 WCPATH。如果省略 WCPATH,则假定为 “.”。

可以使用 “svn diff” 命令或第三方差异工具来生成适用于工作副本的统一差异格式补丁。除了由 “svn diff” 生成的 Subversion 属性差异外,PATCHFILE 文件中的的任何非统一差异格式内容都将被忽略。

补丁中列出的修改将被使用或拒绝。 如果一个修改在其精确的行偏移处不匹配,但却在其它位置找到了与其周围所提供的上下文行相匹配的内容, 则可以在文件中这个更前或更后的位置使用修改。

修改也可能被模糊地使用,这意味着匹配修改时会忽略一行或多行上下文。 如果一个修改找不到可匹配的上下文,则该修改会发生冲突,并将写入扩展名为 .svnpatch.rej 的拒绝文件。

对于每个使用补丁的文件,都将被输出一行,并使用一个字符来报告执行的操作。这些字符具有以下含义:

所使用的修改如果位置有偏差或者使用了模糊应用,则输出的行会以 “>” 开头。应该仔细检查这样的修改。

如果使用补丁的过程删除了一个文件的所有内容,则这个文件将被标记为删除的文件。 如果使用补丁的过程创建了一个新文件,则这个文件将被标记为添加的文件。可以使用 “svn revert”” 命令撤消您不希望的删除和添加。

提示:

如果补丁文件是使用 Subversion 创建的,它将包含该补丁明确可用的版本号 N(可查找类似 “--- foo/bar.txt (revision N)” 这样的行)。为了避免被拒绝,请首先使用 “svn update -r N” 命令更新工作副本至版本 N,再应用补丁,然后再更新回 HEAD 版本。这样,可以以交互的方式来解决冲突。

有效选项:  
-q [--quiet] : 不输出信息,或只输出概要信息
--dry-run : 尝试执行但不做任何修改
--strip ARG : 对补丁文件中解析的路径,将剥离的前导路径组件数量。
默认为 --strip 0,将保留路径不做修改。
--strip 1 会将路径 ‘doc/fudge/crunchy.html’ 改为 ‘fudge/crunchy.html’。
--strip 2 将仅保留 ‘crunchy.html’。
在所有平台上,预期的路径组件分隔符均为 ‘/’。前导 “/” 将被计作一个路径组成部分
--reverse-diff : 反向使用同一差异格式
--ignore-whitespace : 模版匹配时忽略空白