Difference 命令

比较两个文件之间、两个文件夹中的文件之间或者一个搁置集与一个本地或服务器文件之间的差异,如果可能,将这些差异显示出来。

需要的权限

若要使用 difference 命令,您必须将对所有指定项的**“读”权限设置为“允许”**。 有关更多信息,请参见 Team Foundation Server 权限

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

参数

参数

说明

itemspec

必选。 指定要比较的项。 如果未指定版本或路径,则假定为“当前工作区版本”。 接受本地路径和 Team Foundation 版本控制服务器路径。

有关 Team Foundation 如何通过分析 itemspecs 确定范围内项的更多信息,请参见命令行语法(版本控制)

difference 命令不支持通配符。

此参数不能与 /shelveset 选项一起使用。

Itemspec2

可选。 要与 itemspec 进行比较的项。 如果未提供其他 itemspec,则使用该项的最新 Team Foundation 版本控制服务器版本。

Filetype

提供 /type 选项的值。 您可以指定“binary”或“text”,以及代码页编号或代码页的“友好”名称。

Format

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

  • Visual

  • Brief

  • 上下文

  • RCS

  • SS

  • SS_SideBySide

  • SS_Unix

  • Unified

  • Unix

本主题的备注部分对这些输出格式进行了解释。

Versionspec

用户提供的 /version 选项的值。 有关 Team Foundation 如何分析版本规范以确定哪些项在其范围内的更多信息,请参见命令行语法(版本控制)

Shelvesetowner

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

Shelvesetname

指定搁置集的名称。 可以在运行 Team Foundation Server 的服务器上创建多个具有相同名称的搁置集,只要每个搁置集被不同的用户拥有即可。

Shelveset_itemspec

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

username

/login 选项提供值。 可以按域\用户名或用户名的格式指定用户名值。

选项

说明

/type

重写检测到的任何编码,并使用指定的编码将文件提供给区分引擎。

/version

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

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

/format

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

/ignorespace

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

/ignoreeol

忽略两个文件或两个文件版本的新行字符之间的差异。 /ignoreeol/ignoreSpace 的工作方式不同。 /ignorespace 将八个空白视为等同于一个。 然而,假定文件 A 在未更改的文本区域之间有两个新行字符,而文件 B 只有一个,则使用 /ignoreeol 选项的结果将显示存在差异。 如果两个文件都只有一个新行,但文件 A 使用 \r\n 作为新行而 File B 使用的是 \n,则 /ignoreEOL 选项将忽略此差异。

/ignorecase

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

/recursive

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

/options

为要由 diff 调用的工具指定一个选项字符串。 有关更多信息,请参见将文件类型与差异工具相关联将文件类型与合并工具相关联

/shelveset

指定要与搁置集所基于的 Team Foundation 版本控制服务器版本进行比较的搁置集。

此选项不能与 itemspec 参数一起使用。 要比较单个的搁置集项,可以提供 shelveset_itemspec。

/noprompt

取消本应在完成此操作的过程中显示的任何对话框。

/configure

调用“配置用户工具”对话框。 可从 Visual Studio 用户界面使用此工具。 有关更多信息,请参见 将文件类型与差异工具相关联

/login

指定用于在 Team Foundation Server 中验证用户身份的用户名和密码。

备注

提示

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

可以使用 difference 命令来比较下列各项内容并在可能时显示它们之间的差异:

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

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

  • Team Foundation Server 上的搁置集中的一个、一些或所有项。

可以使用 difference 命令来比较已进行版本管理的文件和未进行版本管理的文件。

Team Foundation 对所有文件按类型进行分类。 只要两个文本文件的编码相同,它们就可以进行合并和比较(通过并排方式和逐行方式)。 如果要比较编码不同的两个文件,可以使用 /type 选项暂时屏蔽或重写文件的编码属性。 二进制文件可以进行比较,但无法合并。 将一个或多个二进制文件传递给 difference 命令时,Team Foundation 将指示这些文件与要进行比较的项之间是否存在差异。 有关 Team Foundation 如何区分并处理不同类型文件的更多信息,请参见管理文件类型

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

如果只向 difference 命令传递一个 itemspec:

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

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

  • 如果指定了一个版本范围(例如 /version:C1~C4),将比较该范围两个端点的文件版本。

有关如何查找 tf 命令行实用工具的更多信息,请参见 Tf 命令行实用工具命令

输出格式类型

format 参数可与 /format 选项一起使用,用来指定许多不同的输出格式。 可用输出类型包括:

  • Visual

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

  • Brief

    Brief 格式输出所比较的文件是否有不同。

  • Context

    Context 格式提供文件中的差异的上下文行。 这种格式是从基于 UNIX 的 diff –c 输出格式派生的。

  • RCS

    RCS 格式与 /format:unix 类似,但不提供上下文行。

    对于文件结尾缺少的行尾标记,不提供特殊的处理。

  • SS

    SS 是 Visual SourceSafe 的默认差异输出格式。 有关更多信息,请参见位于 Microsoft 网站上的“Diff (Command Line)”(Diff(命令行))(https://go.microsoft.com/fwlink/?LinkId=99139)。

  • SS_SideBySide

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

  • SS_Unix

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

  • Unified

    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 seprated by commas indicate a line range.
    # signs before the character indicate line numbers in the first file
    # signs after the character indidicate 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 的工作区版本之间的差异,后者是从 Team Foundation 版本控制服务器签出的文件的版本。

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

下面的示例显示了 314.cs 的属于标签“release”的版本与属于变更集 3200 的版本之间的差异。

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

— 或 —

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

下面的示例显示了名为 Nadia 的用户在搁置集 PeerCodeReview8 中搁置的 e271.cs 的版本与该用户的更改所基于的“基搁置集版本”之间的差异。 还显示了当 Nadia 搁置时,对 e271.cs 挂起的更改的类型。

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

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

c:\projects> tf difference /shelveset:PeerCodeReview2

请参见

参考

Merge 命令

Checkin 命令

Shelvesets 命令

概念

管理文件类型

其他资源

Tf 命令行实用工具命令

比较文件夹和文件