- rdiff [-flags] [-V vn] (-r tag1[:date1] | -D date1) [-r tag2[:date2] | -D date2] modules...
- 需要: 仓库。
- 修改: 无。
- 同义词: patch
创建两个发行版之间的 Larry Wall 格式的 patch(1) 文件,它可以直接用于 patch
文件,让旧发行版更新到新发行版。(此为仅有的直接操作仓库的 cvs 命令之一,而不需要事先检出。) diff 的输出发送到标准输出设备上。
你可以指定(采用标准的 `-r' 和 `-D' 选项)任何一个、两个修订版或日期的组合。如果指定一个修订版或日期,patch 反映的是此修订版或日期与当前 rcs 文件中最新修订版之间的差异。
注意,如果软件发行版影响多个目录,那么在给旧源码打补丁的时候,需要给 patch
命令指定 `-p' 选项,让 patch
找到处于其他目录中的文件。
rdiff options
rdiff
支持的标准选项(参阅 Common options,了解完整说明):
-
使用不迟于
date 的最新修订版。
-
如果没有匹配的修订版,获取最新的修订版(而不是忽略这些文件)
-
通过
kflag 处理关键字。参阅
Keyword substitution。
-
只在当前目录,不传递到子目录。
-
递归方式检查。此为默认选项。
- 使用 tag 修订版,或者当 date 指定,并且 tag 是分支标签,分支 tag 上的版本可以当作是在 date 上。见 Common options。
-D
date
-f
-k
kflag
-l
-R
-r
tag
另外还支持以下选项:
-
使用上下文 diff 格式。此为默认。
-
创建更新总结报告,而不是补丁。总结中包括两个发行版间文件修改和添加的信息。它会被发送到标准输出设备。它的用处在于,例如,找出两个日期或发行版间有哪些文件被改动。
-
两个修订版的顶端的差异,发送到标准输出设备。这对于查看文件最后的修改很有用。
-
上下文差异中使用 unidiff 格式。记住,旧版本的
patch
程序不能处理 unidiff 格式,所以,如果打算将补丁发到网上,不该使用 ` -u'。
- 按照当前 rcs 版本 vn 的规则(扩展格式在 rcs 版本 5 做了修改) 扩展关键字。注意此选项不再使用。 cvs 只按 rcs 版本 5 的方式扩展关键字。
-c
-s
-t
-u
-V
vn
rdiff 示例
假设你收到 foo@example.net 发来的邮件,索取 tc 编译器从 1.2 到 1.4 发行版的更新。你手头上没有这个补丁,但使用 cvs 可以用一个命令很容易得到:
$ cvs rdiff -c -r FOO1_2 -r FOO1_4 tc | \ $$ Mail -s 'The patches you asked for' foo@example.net
假如你生成了发行版 1.3,并为修复 bug 建立了 `R_1_3fix' 分支。以前还为发行版 1.3.1 建立 `R_1_3_1'。现在,你想了解分支上做了多少开发工作。可以用这个命令:
$ cvs patch -s -r R_1_3_1 -r R_1_3fix module-name cvs rdiff: Diffing module-name File ChangeLog,v changed from revision 1.52.2.5 to 1.52.2.6 File foo.c,v changed from revision 1.52.2.3 to 1.52.2.4 File bar.h,v changed from revision 1.29.2.1 to 1.2