`
yanwenhan
  • 浏览: 119458 次
  • 性别: 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

<!---->

分享到:
评论

相关推荐

    这个是比较工具diff_tool

    这种差异显示对于追踪修改历史、合并冲突或者找出错误来源非常有用。 在安装`diff_tool`之后,用户通常可以通过命令行界面来调用它。在命令行中输入`diff_tool file1 file2`,其中`file1`和`file2`分别代表你要比较...

    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之前的版本安装 从页面中选择发布压缩包。 在头盔插件目录...

    PyPI 官网下载 | routeros-diff-0.5.1.tar.gz

    `routeros-diff`这个库很可能是为了处理RouterOS系统的差异比较而设计的。RouterOS是由MikroTik公司开发的一款操作系统,广泛用于网络设备,如路由器和无线接入点。它提供了丰富的API和命令行接口,允许开发者和管理...

    diff-match-patch

    这对于查看文本间的差异,例如代码比较或者文档修订历史,是非常有用的。 2. **Match**:这部分主要涉及字符串的匹配算法,比如模糊匹配。它可以用来查找一个字符串在另一个大字符串中的位置,即使存在一些微小的不...

    21sji广告联盟 修订版

    这个修订版的源代码包可能还包含了版本控制信息(如Git仓库),版本差异文件(如diff或patch),以及任何其他开发者在项目中使用的工具或脚本。对于开发者来说,这个资源提供了深入学习广告联盟运营机制、优化性能和...

    文件比较器,显示两个文件。文件夹的不同地方 、使用 方便

    - **文档校对**:编辑和作者使用比较器来比较修订版,确定哪些部分已被修改。 - **数据迁移**:在将数据从一个系统迁移到另一个系统时,比较器确保数据的一致性。 5. 具体工具举例: 市场上有很多优秀的文件比较...

    hg-diff:一个用于比较商品修订的GUI程序。-开源

    1. **比较修订版本**:输入两个修订哈希或使用时间线选择,查看两个版本间的差异。 2. **文件差异视图**:每个修改的文件都会以两个并排的代码编辑器展示,高亮显示差异部分。 3. **逐行比较**:用户可以逐行查看...

    在线文本对比工具

    Mergerly可能采用了诸如最长公共子序列、最长公共前缀/后缀或者差异分段算法等方法来识别文本间的差异。这些算法分析两个文本的每一行或每个字符,找出它们的相同和不同之处,然后以彩色高亮的形式显示出来,便于...

    文本对比 text diff

    此外,在协同编辑或文档审阅时,文本对比也是必不可少的工具,可以清晰地显示两个版本间的修改之处。例如,Markdown编辑器的"diff模式"就是利用文本对比功能来显示文本更改的。 TextDiff工具可能提供了以下功能: ...

    mipi_CSI-2_specification_v3-0_diff_v2-1.pdf

    9. **标准化和一致性**:随着MIPI Alliance的不断发展,V3.0可能会进一步推动接口标准的统一,确保不同供应商的产品间的一致性和互操作性。 10. **文档和工具完善**:V3.0的文档可能更加详尽,包括更清晰的解释、更...

    alkacon-diff-0.9.2-sources.jar.zip

    "diff"通常指的是差异比较,它是版本控制系统的核心概念,用于展示文件或代码之间的差异。 "0.9.2"代表了这个库的版本号。在软件开发中,版本号通常遵循语义化版本管理(Semantic Versioning),即主版本号.次版本...

    高通平台SPI显示

    ".diff"通常表示差异或更改,这里可能是针对高通平台SPI驱动的更新或修复。解压并应用此补丁可能可以改进SPI显示性能、解决已知问题或者添加新的特性。 6. **SPI配置与调试** 在高通平台上配置SPI接口需要设置适当...

    PDF文件比较(PDFDIFF)

    这个报告通常会清晰地显示出两个文件中的差异部分,使得用户可以快速定位并理解这些差异。此外,PDFDIFF还可能提供一些自定义选项,例如设置对比的精确度,以满足不同用户的需求。 关于"diffpdf.exe",这是PDFDIFF...

    AJCDiff 文件比较器

    - **法律文档比对**:律师或法务工作者可以利用AJCDiff对比合同或法规草案的修订版,确保准确无误。 - **数据验证**:在数据分析过程中,AJCDiff可以帮助检查数据导入导出后的差异,防止错误发生。 总之,AJCDiff...

    enigma_cd_dvd_info_diff.zip_Enigma

    综合以上信息,我们可以合理推断“enigma_cd_dvd_info_diff.zip_Enigma”压缩包可能是一个Enigma项目首个作品DVD版的更新补丁。这个补丁对于那些希望体验更新后内容的用户来说十分重要。他们可能需要遵循一定的步骤...

    svn命令linux

    - `svn diff --revision &lt;范围&gt;`比较指定版本间的差异。 7. **其他命令**: - `svn checkout --revision &lt;版本号&gt;`检出特定修订版本的文件或目录。 - 支持ISO8601日期时间格式指定版本号,如`{YYYY-MM-DDTHH:MM}...

    linux svn directory

    3. **比较`folder.txt`文件在不同版本间的差异**: ``` svnlook diff /opt/ice/coreassets/svn/icekernal/ -r 200:201 folder.txt ``` 通过上述步骤,我们可以清晰地了解到SVN仓库中的目录结构及文件变化情况,...

    cvs-refcard-a4

    - **rdiff**:显示不同发布版本间的差异。 - **release**:表明某个目录不再使用。 - **remove**:从版本库中删除条目。 - **rtag**:为模块添加符号标签。 - **status**:显示状态信息。 - **tag**:为检出的文件...

Global site tag (gtag.js) - Google Analytics