difference 命令

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Team Foundation 版本控制 (TFVC) difference 命令比较并尽可能显示两个文件、两个文件夹中的文件、搁置集以及本地文件或服务器文件之间的差异。

先决条件

若要使用 difference 命令,必须将所有指定项的“读取”权限设置为“允许”。 有关详细信息,请参阅默认 TFVC 权限

语法

tf diff[erence] itemspec [/version:versionspec] [/type:filetype] 
[/format:format [/ignorespace] [/ignoreeol] [/ignorecase] [/recursive] 
[/options][/noprompt][/login:username,[password]]
tf diff[erence] itemspec itemspec2 [/type:filetype] [/format: format] 
[/ignorespace] [/ignoreeol] [/ignorecase] [/recursive] [/options] [/noprompt][/login:username,[password]]
tf diff[erence] [/shelveset:shelvesetname[;shelvesetowner]] 
shelveset_itemspec [/type:filetype] 
[/format: format] [/ignorespace] [/ignoreeol] [/ignorecase] 
[/recursive] [/options] [/noprompt][/login:username,[password]]
tf diff[erence] /configure

参数

参数

Argument

说明

<itemspec>

必需。 指定要比较的项。 如果未指定版本或路径,则假定为当前工作区版本。 接受本地和 Azure DevOps Server 路径。

有关 TFVC 如何分析 itemspec 以确定哪些项在范围内的详细信息,请参阅使用 Team Foundation 版本控制命令

difference 命令不支持通配符。

此参数不能与 /shelveset 选项结合使用。

<itemspec2>

可选。 要与 itemspec 进行比较的项。 如果未提供第二个 itemspec,则使用该项的最新 Azure DevOps Server 版本。

<filetype>

/type 选项提供值。 可以为代码页指定 binarytext 以及代码页编号或易记名称。

<format>

/format 选项一起使用,以指定以下其中一种类型的输出格式:

  • Visual
  • Brief
  • Context
  • RCS
  • SS
  • SS_SideBySide
  • SS_Unix
  • Unified
  • Unix

这些输出格式在备注部分进行了说明。

<versionspec>

用户为 /version 选项提供的值。 有关 TFVC 如何分析版本规范以确定哪些项在其范围内的详细信息,请参阅使用 Team Foundation 版本控制命令

<shelvesetowner>

按用户名标识搁置集的所有者。 如果未提供此参数的值,则假定为当前用户。

<shelvesetname>

指定搁置集的名称。 只要不同的用户拥有每个搁置集,就可以在运行 TFVC 的服务器上创建多个同名的搁置集。

<shelveset_itemspec>

指定搁置集中要与基础搁置集版本进行比较的文件夹或文件的名称。

<username>

/login 选项提供值。 你可将用户名值指定为 DOMAIN\usernameusername

选项

选项

说明

/type

重写检测到的任何编码,并使用指定的编码将文件呈现给差异引擎。

/version

指定要比较的文件或文件夹的版本。 默认情况下,如果未提供 versionspec,则 TFVC 使用工作区版本。

可以通过在每个文件名的末尾追加分号和版本说明符来指定版本,而不是使用 /version 标志。

/format

指定由 format 参数指定的输出格式。

/ignorespace

不突出显示所比较文件之间的空格差异。

/ignoreeol

忽略两个文件或文件版本中换行符之间的差异。 /ignoreeol 的处理方式与 ignorespace 不同,后者将八个空格与一个空格视为相同。 但是,如果使用 /ignoreeol 选项,并且文件 A 在未更改的文本区域之间有两个换行符,而文件 B 有一个换行符,则结果将显示为差异。 如果两个文件都只有一个换行符,但文件 A 使用 \r\n 作为换行符,而文件 B 使用 \n,则 /ignoreeol 选项将忽略该差异。

/ignorecase

不突出显示所比较文件之间的字母大小写差异。

/recursive

比较当前文件夹与其所有子文件夹之间的差异。

/options

指定要由 difference 调用的工具的选项字符串。 有关详细信息,请参阅将文件类型与差异工具关联将文件类型与合并工具关联

/shelveset

指定要与搁置集所基于的 Azure DevOps Server 版本进行比较的搁置集。

此选项不能与 itemspec 参数组合使用。 若要比较各搁置集项,可以提供 shelveset_itemspec

/noprompt

禁止显示此操作完成期间将显示的任何对话框。

/configure

从 Visual Studio 用户界面调用“配置用户工具”对话框。 有关详细信息,请参阅将文件类型与差异工具关联

/login

指定用户名和密码,以便使用 TFVC 对用户进行身份验证。

注解

注意

可以在命令行中键入 tf difftf difference 以运行此命令。

可以使用 difference 命令比较并尽可能显示以下各项之间的差异:

  • 两个不同的文件或同一文件的两个版本。

  • 文件夹中的一个或多个项。

  • Azure DevOps Server 上搁置集中的一个、部分或所有项。

可以使用 difference 命令比较版本控制文件和非版本控制文件。

TFVC 按类型对所有文件进行分类。 只要两个文本文件具有相同的编码,就可以并排以及逐行合并和比较。 如果要比较编码不相同的两个文件,可以使用 /type 选项暂时屏蔽或重写文件的编码属性。

二进制文件可以比较,但不能合并。 将一个或多个二进制文件传递给 difference 命令时,TFVC 会指示该文件与要与之比较的项之间是否存在差异。 有关 TFVC 如何区分和处理不同类型文件的详细信息,请参阅管理文件类型

如果指定两个文件名,则会比较这两个文件。 可以通过在每个文件名的末尾追加分号和版本说明符来指定版本,而不是使用 /version 标志。

如果仅将一个 itemspec 传递给 difference 命令:

  • 如果未提供 versionspec,则默认会将项的当前工作区版本与基础工作区版本进行比较。 例如,tf difference header.h 将 header.h 的当前版本与 header.h 所基于的版本进行比较。

  • 如果在 itemspec 中包含 versionspec(如 tf difference header.h;LBeta1),TFVC 会将该版本与磁盘上的当前工作区版本进行比较。

  • 如果指定版本范围(如 /version:C1~C4),则会比较该范围两个终结点处的文件版本。

有关如何使用 tf 命令行实用工具的详细信息,请参阅使用 Team Foundation 版本控制命令

输出格式类型

format 参数(与 /format 选项一起使用)指定许多不同的输出格式。 可以使用以下输出类型:

  • Visual 格式类型将打开外部差异应用程序。 默认情况下,启动 diffmerge.exe。

  • Brief 格式输出要比较的文件是否不同。

  • Context 格式为文件中的差异提供了上下文行。 此格式派生自基于 UNIX 的 diff -c 输出格式。

  • RCS 格式类似于 /format:unix,但不提供上下文行。 对于文件末尾缺少的行尾标记,不提供特殊处理。

  • SS 是 Visual SourceSafe 的默认差异输出格式。 有关详细信息,请参阅 Diff(命令行)

  • SS_SideBySide 是 Visual SourceSafe 的默认并排输出格式。

  • SS_Unix 类似于 /format:unix 输出格式,但 /format:ss_unix 包含上下文行,而 /format:unix 不包含。

  • Unified 格式派生自基于 UNIX 的 diff -u 输出格式。 /format:context 在差异字符串之间重复相同的上下文行,但 /format:unified 不会。

    仅当与下一个差异字符串的距离大于上下文行数时,Unified 格式才会生成新的统一差异字符串 (@@ ... @@) 行。

  • Unix 输出类型派生自基于 UNIX 的 diff 命令输出格式。

    Unix 输出格式按以下方式构造:

    <metadataline>
    "< " line prefix for lines from the first file
    "---" line
    "> " line prefix for lines from the second file
    
    <metadataline> can be one of these possibilities:
    #a#,# -- add lines from line # in file1 into file2 at lines #->#
    #,#d# -- delete lines from line # -> # in file 1 from file2 at line #
    #,#c#,# -- change lines from line # -> # in file1 into the lines in file2 at line # -> #
    
    # signs separated by commas indicate a line range.
    # signs before the character indicate line numbers in the first file.
    # signs after the character indicate line numbers in the second file.
    
    /// No end of line marker at the end of the file:
    /// \ No newline at end of file
    

示例

以下示例显示 314.cs 本地版本与 314.cs 工作区版本(即从 Azure DevOps Server 签出的文件版本)之间的差异。

c:\projects>tf difference 314.cs

以下示例显示 src 文件夹中已更改的所有文件,但不显示 src 子文件夹中已更改的文件。

c:\projects>tf difference src /format:visual

以下示例显示 1254.cs 更改集 3 和更改集 8 之间的差异。

c:\projects>tf difference /version:C3~C8 1254.cs

以下示例显示属于标签 release 的 314.cs 版本与属于更改集 3200 的版本之间的差异。

c:\projects>tf difference 314.cs;Lrelease 314.cs;C3200

-或-

c:\projects>tf difference 314.cs;Lrelease~C3200

以下示例显示名为 Pat 的用户搁置在搁架集 PeerCodeReview8 中的 e271.cs 版本与其更改所基于的基础搁置集版本之间的差异。 输出还显示用户搁置时 e271.cs 挂起的更改类型。

c:\projects> tf difference /shelveset:PeerCodeReview8;Pat e271.cs

以下示例显示 PeerCodeReview2 搁置集中的所有文件与这些文件的基础搁置集版本之间的差异。

c:\projects> tf difference /shelveset:PeerCodeReview2