DIFF

描述

显示文件、变更集和标签之间的差异。

用法

cm diff <csetspec> | <lbspec> | <shspec> [<csetspec> | <lbspec> | <shspec>] [<path>] [--added] [--changed] [--moved] [--deleted] [--repositorypaths] [--download=<download_path>] [--encoding=<name>] [--comparisonmethod=(ignoreeol | ignorewhitespaces | ignoreeolandwhitespaces | recognizeall)] [--clean] [--integration] [--format=<str_format>] [--dateformat=<str_format>]

(显示“源”变更集或搁置集与“目标”变更集或搁置集之间的差异。可以使用变更集或标签规范来指定变更集。当给出两个规范时,第一个将是差异的“源”;第二个将是“目标”。如果只给出一种规范,则“源”将是指定“目标”的父变更集。如果指定了可选路径,则差异窗口将启动以显示这两个修订版文件的差异。)

cm diff <revspec1> <revspec2>

(显示一对修订版之间的差异。差异显示在差异窗口中。指定的第一个修订版将出现在左侧。)

cm diff <brspec> [--added] [--changed] [--moved] [--deleted] [--repositorypaths] [--download=<download_path>] [--encoding=<name>] [--comparisonmethod=(ignoreeol | ignorewhitespaces | ignoreeolandwhitespaces | recognizeall)] [--clean] [--integration] [--format=<str_format>] [--dateformat=<str_format>] [--fullpaths | --fp]

(显示分支差异。使用“cm help objectspec”了解有关规范的更多信息。)

选项

选项 / 参数描述
--added仅打印包含添加到存储库的项目的差异。
--changed仅打印包含已更改项目的差异。
--moved仅打印包含移动或重命名的项目的差异。
--deleted仅打印包含已删除项目的差异。
--repositorypaths打印存储库路径而不是工作区路径。(此选项会覆盖“--fullpaths”选项。)
--download将差异内容存储在指定的输出路径中。
--encoding指定输出编码,例如:utf-8。请参阅 http://msdn.microsoft.com/en-us/library/system.text.encoding.aspx 上的 MSDN 文档以获取支持的编码表及其格式(在页面末尾的“名称”列中)。
--comparisonmethod设置指定的比较方法。有关更多信息,请参见备注。
--clean不考虑由于合并而产生的差异,而只考虑简单签入创建的差异。
--integration显示待合并到其父分支中的分支更改。它会考虑从/到其父分支所做的任何变基或先前合并。
--format以特定格式检索输出消息。有关更多信息,请参见备注。
--dateformat用于输出日期的格式。
--fullpaths, --fp强制在可能的情况下打印文件的完整工作区路径。

帮助

备注

文件状态

如果未指定“--added”、“--changed”、“--moved”或“--deleted”,则命令将打印所有差异。

选项 / 参数描述
'A'表示已添加的项目。
'C'表示已更改的项目。
'D'表示已删除的项目。
'M'表示已移动的项目。左侧项目是原始项目,右侧项目是目标项目。

比较方法(--comparisonmethod 选项)

选项 / 参数描述
ignoreeol忽略行尾差异。
ignorewhitespaces忽略空白差异。
ignoreeolandwhitespaces忽略行尾和空白差异。
recognizeall检测行尾和空白差异。

此命令接受格式字符串以显示输出。此命令的参数如下

选项 / 参数描述
{path}项目路径。
{date}更改日期/时间。
{owner}更改作者。
{revid}被视为差异目标的修订版的修订版 ID。
{parentrevid}被视为差异目标的修订版的父修订版的修订版 ID。
{baserevid}被视为差异源的修订版的修订版 ID。
{srccmpath}移动项目之前(移动操作)的服务器路径。
{dstcmpath}移动项目之后(移动操作)的服务器路径。
{type}项目类型:D(目录)、B(二进制文件)、F(文本文件)、S(符号链接)、X(Xlink)
{repository}项目的存储库。
{status}项目状态:A(已添加)、D(已删除)、M(已移动)、C(已更改)
{fsprotection}显示项目权限(Linux/Mac chmod)。
{srcfsprotection}显示父修订版项目权限。
{newline}插入新行。

关于“revid”的说明

对于已添加的项目,baserevidparentrevid 将为 -1,因为在这种情况下不存在以前的修订版。对于已删除的项目,revid 是源修订版的 ID,而 baserevid 将为 -1,因为不存在目标修订版。对于 Xlink,baserevidparentrevid 始终为 -1。

示例

比较分支

cm diff br:/main/task001

cm diff br:/main/task001 \doc\readme.txt

cm diff br:/main/task001 --integration

比较变更集树

cm diff 19

cm diff 19 25

cm diff cs:19 cs:25 --format="{path} {parentrevid}"

cm diff cs:19 cs:23 --format="{date} {path}" --dateformat="yy/dd/MM HH:mm:ss"

cm diff cs:19 cs:23 --changed

cm diff cs:19 cs:23 --repositorypaths

cm diff cs:19 cs:23 --download="D:\temp"

cm diff cs:19 cs:23 --clean

cm diff cs:19 cs:23 \doc\readme.txt

比较标签树

cm diff lb:FirstReleaseLabel lb:SecondReleaseLabel

cm diff lb:tag_193.2 cs:34214

cm diff cs:31492 lb:tag_193.2

比较货架树

cm diff sh:2

cm diff sh:2 sh:4

比较版本规范

cm diff rev:readme.txt#cs:19 rev:readme.txt#cs:20

cm diff serverpath:/doc/readme.txt#cs:19@myrepo serverpath:/doc/readme.txt#br:/main@myrepo@localhost:8084

cm diff rev:foo.c#cs:1 rev:foo.c#cs:2 --comparisonmethod=ignoreeol