`
yanwenhan
  • 浏览: 115367 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

diff—显示修订版间的差异

    博客分类:
  • CVS
阅读更多
  • 语法: diff [-lR] [-k kflag] [format_options] [(-r rev1[:date1] | -D date1) [-r rev2[:date2] | -D date2]] [files...]
  • 需要: 工作目录,仓库。
  • 修改: 无。

diff 命令用于比较文件的不同修订版。默认是比较工作目录文件与其所基于的修订版,然后报告所发现的差异。

如果给定文件名,则只比较这些文件。如果给定目录,则会比较目录下所有的文件。

diff 的退出状态与其他 cvs 命令不同,详细情况见 Exit status

 

diff 选项

diff 支持标准选项(参阅 Common options,了解完整说明):

-D date
使用不迟于 date 的最新修订版。见 `-r' 了解它是如何影响比较的。
-k kflag
根据 kflag 处理关键字。参阅 Keyword substitution
-l
只在当前目录运行。
-R
递归方式检验。此为默认。
-r tag[:date]
比较指定的 tag 修订版,或者当 date 指定,并且 tag 是分支标签,分支 tag 上的版本可以当作是在 date 上。可以没有,有一个或两个 `-r' 选项。没有 `-r' 选项时,工作文件将与它所基于的修订版进行比较。有一个 `-r' 选项时,指定的修订版与当前工作文件进行比较。两个 `-r' 选项时,将比较这两个修订版(同时你的工作文件不会影响输出结果)。 <!----><!----><!---->

一个或所有的 `-r' 选项都能用上面提到的 `-D date' 选项替代。

<!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!---->

下面的选项指定输出的格式。他们与 GNU diff 有相同的意思。许多选项有两个相等的名字,一个是 `-' 后面的单个字母,另一个是 `--' 后面的长名字。

`-lines'
显示上下文 lines (一个整数) 行。此选项不指定输出的格式; 如不与 `-c' 或 `-u' 一起使用,没有任何作用。该选项已经废弃。对适当操作,patch 通常至少要两行内容。
`-a'
所有的文件都视为文本文件来逐行比较,甚至他们似乎不是文本文件。
`-b'
忽略空格引起的变化,并认为一个或多个空格都相同。
`-B'
忽略插入删除空行引起的变化。
`--binary'
以二进制模式读写数据。
`--brief'
仅报告文件是否相异,不在乎差别的细节。
`-c'
使用上下文输出格式。
`-C lines'
`--context[=lines]'
使用上下文输出格式,显示以指定 lines (一个整数),或者当 lines 没有给出时是三行。对于正确的操作,patch 需要上下文至少要有两行。
`--changed-group-format=format'
使用 format 输出一组包含两个文件的不同处的行,其格式是 if-then-else。参阅 Line group formats.
`-d'
改变算法也许发现变化的一个更小的集合。这会使 diff 变慢 (有时很慢)。
`-e'
`--ed'
输出为一个有效的 ed 脚本。
`--expand-tabs'
在输出时扩展制表符为空格,保持输入文件的制表符对齐方式。
`-f'
产生一个类似 ed 脚本的输出,但是改变他们在文件出现的顺序。
`-F regexp'
在上下文和统一格式中,对于每一大块的不同,显示出匹配 regexp 的一些前面的行。
`--forward-ed'
产生象 ed 脚本的输出,但是它们在文件出现的顺序有改变。
`-H'
使用启发规则加速操作那些有许多离散的小差异的大文件。
`--horizon-lines=lines'
比较给定 lines 的有共同前缀的最后行,和有共同或缀的最前 lines 行。
`-i'
忽略大小写; 认为大小写字母是相同的。
`-I regexp'
忽略因匹配 regexp 而插入,删除行带来的改变。
`--ifdef=name'
合并使用 name 的 if-then-else 格式输出。
`--ignore-all-space'
在比较行的时候忽略空格。
`--ignore-blank-lines'
忽略插入和删除空行。
`--ignore-case'
忽略大小写; 认为大小写字母是相同的。
`--ignore-matching-lines=regexp'
忽略因匹配 regexp 而插入,删除行带来的改变。
`--ignore-space-change'
忽略后面的空格,并认为所有的单个与多个空格是相同的。
`--initial-tab'
无论是常规的或者格式化的前后文关系,在文本行前输出制表符代替空格。使制表符对齐方式看上去象是常规的一样。
`-L label'
使用 label 给出的字符替代文件头里面上下文和统一格式的文件名。
`--label=label'
使用 label 给出的字符替代文件头里面上下文和统一格式的文件名。
`--left-column'
以并列方式印出两公共行的左边。
`--line-format=format'
使用 format 输出 if-then-else 格式所有的行。参阅 Line formats.
`--minimal'
改变算法也许发现变更的一个更小的集合。这会使 diff 变慢 (有时很慢)。
`-n'
输出 RCS 格式的比较; 除了每条指令指定的行数受影响外像 `-f' 一样。
`-N'
`--new-file'
在目录比较中,如果那个文件只在其中的一个目录中找到,那么它被视为在另一个目录中是一个空文件。
`--new-group-format=format'
使用 format 以 if-then-else 格式输出只在第二个文件中取出的一个行组。参阅 Line group formats.
`--new-line-format=format'
使用 format 以 if-then-else 格式输出只在第二个文件中取出的一行。参阅 Line formats.
`--old-group-format=format'
使用 format 以 if-then-else 格式输出只在第一个文件中取出的一个行组。参阅 Line group formats.
`--old-line-format=format'
使用 format 以 if-then-else 格式输出只在第一个文件中取出的一行。参阅 Line formats.
`-p'
显示带有 C 函数的改变。
`--rcs'
输出 RCS 格式的比较; 除了每条指令指定的行数受影响外像 `-f' 一样。
`--report-identical-files'
`-s'
当两个文件相同时报告。
`--show-c-function'
显示带有 C 函数的改变。
`--show-function-line=regexp'
在上下文和统一的格式,对于每一大块的差别,显示出匹配 regexp 的一些前面的行。
`--side-by-side'
使用并列的输出格式。
`--speed-large-files'
使用启发规则加速操作那些有许多离散的小差异的大文件。
`--suppress-common-lines'
在并列格式中不印出公共行。
`-t'
在输出时扩展制表符为空格,保护输入文件的制表符对齐方式。
`-T'
无论是常规的或者格式化的前后文关系,在文本行前输出制表符代替空格。使得制表符对齐方式看上去象是常规的一样。
`--text'
所有的文件都视为文本文件来逐行比较,甚至他们似乎不是文本文件。
`-u'
使用统一的输出格式。
`--unchanged-group-format=format'
使用 format 输出两个文件的公共行组,其格式是 if-then-else。参阅 Line group formats.
`--unchanged-line-format=format'
使用 format 输出两个文件的公共行,其格式是 if-then-else。参阅 Line formats.
`-U lines'
`--unified[=lines]'
使用统一输出,显示以指定 lines (一个整数), 或者当 lines 没有给出时是三行。对于正确的操作,patch 典型地至少要有两行。
`-w'
在比较行时忽略空格。
`-W columns'
`--width=columns'
在并列格式输出时,使用指定的 columns
`-y'
使用并列格式输出。

 

diff 示例

下面的行产生 backend.c 文件 1.14 和 1.19 修订版间的 Unidiff (`-u' 标识)。因为使用 `-kk' 标识,没有关键字会被替换,所以差异是忽略了关键字替换。

     $ cvs diff -kk -u -r 1.14 -r 1.19 backend.c

假设试验分支 EXPR1 基于 RELEASE_1_0 标签的一组文件。要查看分支上的状态,可以试验下面命令:

     $ cvs diff -r RELEASE_1_0 -r EXPR1

类似这样的命令可以产生两个发行版的不同内容:

     $ cvs diff -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs

如果你维护着 ChangeLog,提交前使用如下命令,可以帮助你撰写 ChangeLog 条目。将打印出本地尚未提交的修改。

     $ cvs diff -u | less

<!---->

分享到:
评论

相关推荐

    KiCad-Diff:在pcbnew布局修订版之间执行图像差异的脚本

    KiCad-Diff 这是一个带有Tk接口的python程序,用于比较KiCad PCB版本。 此版本的差异策略已更改,并且SVG是直接生成的,而不是像以前的版本那样在ImageMagick中进行渲染。 这使得几秒钟内所有图层的渲染成为可能...

    helm-diff:一个helm插件,显示一个diff来说明helm升级将发生的变化

    这也可以用来比较头盔版本的两个修订版。 安装 使用Helm插件管理器(&gt; 2.3.x) helm plugin install https://github.com/databus23/helm-diff Helm 2.3.0之前的版本安装 从页面中选择发布压缩包。 在头盔插件目录...

    git-meld:包装 git 和 meld 以比较 git 树

    git meld 是一个 git 命令,它允许您使用 meld 或任何其他支持目录比较的差异工具来比较和编辑修订版之间的树状结构。 git meld 是 git diff 的前端,并接受相同的选项和参数。 它本质上是一个扩展的 git-difftool...

    MediaWiki-Streaming:一组用于处理带流的MediaWiki数据的实用程序

    dump2json 将XML转储转换为修订版JSON Blob流dump2diffs 直接从XML转储计算差异fetch_missing_diffs 扫描差异文档以查找丢失的差异并填写。 json2diffs 计算“ diff”字段并将其添加到修订JSON blob流中mend_diffs ...

    SVN Browser-crx插件

    - 导航到资源的上一页或下一次修订版。 - 查看变更集的可理解摘要中的所有更改。 - 查看修订之间的差异。 ##权限 Web请求 :用于分析请求的标题来确定它是SVN资源。 ## Credits. - kevin decker的jsdiff...

    tl-differ:类型语言差异网站

    编译中要“编译”该站点,必须运行以下Python脚本:python get-all-tl.py 这将克隆或更新信息库,签出影响scheme.tl文件的每个修订,然后对其进行分析以产生“紧凑的” diff.js差异。 这些文件都不包含在存储库中,...

    CloudDiff-crx插件

    单击“Diff”按钮以触发配置的Diff工具,或“内联”按钮以查看浏览器的差异。据我所知,支持Windows,Mac和Linux,但我无法确定所有可能的配置都已覆盖。如果您在...

    oXygen XML Editor(XML脚本编辑软件)

    oXygen在调试模式进入,以显示来源和侧样式表文件侧,也显示效果和特殊的调试视图时提供了一个特殊的布局。调试和分析可以使用的Xalan,Xalan, Saxon 6 or Saxon 8转化引擎的最新版本来完成。动态呈现的输出,因为它...

    starteam用户指南

    显示工具栏的 About 对话框 . . . . . . . . . . . . . 46 退出工具栏. . . . . . . . . . . . . . . . . . . . . . 47 第 5 章 管理文件夹49 了解 StarTeam 文件夹层次 . . . . . . . . . . . . . 49 添加新 ...

    Git权威指南PDF完整版

    11.4.4 差异比较:git diff/ 150 11.4.5 文件追溯:git blame/ 151 11.4.6 二分查找:git bisect/ 152 11.4.7 获取历史版本/ 156 第12章 改变历史/ 157 12.1 悔棋/ 157 12.2 多步悔棋/ 159 12.3 回到未来/ 161 ...

Global site tag (gtag.js) - Google Analytics