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”的说明
对于已添加的项目,baserevid 和 parentrevid 将为 -1,因为在这种情况下不存在以前的修订版。对于已删除的项目,revid 是源修订版的 ID,而 baserevid 将为 -1,因为不存在目标修订版。对于 Xlink,baserevid 和 parentrevid 始终为 -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