Difference コマンド

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

Visual Studio 2019 | Visual Studio 2022

Team Foundation バージョン管理 (TFVC) difference コマンドは、2 つのファイル、2 つのフォルダー内のファイル、またはシェルブセットとローカルまたはサーバー ファイルの相違点を比較し、可能であれば表示します。

前提条件

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 の両方のサーバー パスを受け入れます。

TFVC が itemspec を解析してスコープ内の項目を判別する方法の詳細については、「Team Foundation バージョン管理コマンドの使用」を参照してください。

difference コマンドでは、ワイルドカード文字をサポートしていません。

このパラメーターを /shelveset オプションと組み合わせることはできません。

<itemspec2>

省略可能。 itemspec を比較する項目。 2 つめの itemspec を指定しない場合は、項目の最新の Azure DevOps サーバー バージョンが使用されます。

<filetype>

/type オプションの値を指定します。 binary または text と、コードページ番号またはコード ページのフレンドリ名を指定できます。

<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\username または username の形式で指定できます。

Options

オプション

説明

/type

検出されたエンコーディングをオーバーライドし、指定したエンコーディングを使用して差分エンジンにファイルを渡します。

/version

比較するファイルまたはフォルダーのバージョンを指定します。 既定では、versionspec を指定しない場合、TFVC はワークスペース バージョンを使用します。

/version フラグを使用する代わりに、各ファイル名の末尾にセミコロンとバージョン指定子を追加することで、バージョンを指定できます。

/format

format 引数で指定された出力形式を指定します。

/ignorespace

比較されたファイル間の空白の相違点は強調表示されません。

/ignoreeol

2 つのファイルまたはファイル バージョンの改行文字の相違点を無視します。 /ignoreeol は、8 つのスペースを 1 つと同様に扱う ignorespace とは異なる動作をします。 ただし、/ignoreeol オプションを使用し、"ファイル A" の変更されていないテキスト領域の間に 2 つの改行文字があり、"ファイル B" に 1 つがある場合、結果は相違点として表示されます。 両方のファイルに新しい行が 1 つしかないが、"ファイル A" が新しい行として \r\n を使用し、"ファイル B" が \n を使用する場合、/ignoreeol オプションはそれを相違点として無視します。

/ignorecase

比較されたファイル間の文字の大文字と小文字の相違点は強調表示されません。

/recursive

現在のフォルダーとそのすべてのサブフォルダーの相違点を比較します。

/options

difference によって呼び出されるツールのオプション文字列を指定します。 詳細については、ファイルの種類を差分ツールに関連付ける方法に関する記事と「ファイルの種類とマージ ツールの関連付け」を参照してください。

/shelveset

シェルブセットの基本になる Azure DevOps サーバー バージョンと比較するシェルブセットを指定します。

このオプションを itemspec 引数と組み合わせることはできません。 個々のシェルブセット項目を比較するために、shelveset_itemspec を指定できます。

/noprompt

指定しない場合にはこの操作の実行中に表示されるダイアログ ボックスを非表示にします。

/configure

Visual Studio ユーザー インターフェイスから [ユーザー ツールの構成] ダイアログ ボックスを呼び出します。 詳細については、ファイルの種類を差分ツールに関連付ける方法に関する記事を参照してください。

/login

TFVC でユーザーを認証するためのユーザー名とパスワードを指定します。

解説

注意

コマンド ラインで tf diff または tf difference を入力して、このコマンドを実行できます。

difference コマンドを使用して、次の相違点を比較し、可能な場合は表示できます。

  • 2 つの異なるファイル、または同じファイルの 2 つのバージョン。

  • フォルダー内の 1 つ以上のアイテム。

  • Azure DevOps サーバー上のシェルブセット内の 1 つ、一部、またはすべての項目。

difference コマンドを使用して、バージョン管理されたファイルとバージョン管理されていないものの両方を比較できます。

TFVC は、すべてのファイルを種類別に分類します。 テキスト ファイルは、両方のファイルのエンコードが同じである限り、マージして、横並びで 1 行ずつ比較できます。 エンコードが同じではない 2 つのファイルを比較する場合は、/type オプションを使用して、ファイルのエンコード プロパティを一時的にマスクまたはオーバーライドできます。

バイナリ ファイルは比較できますが、マージできません。 difference コマンドに 1 つ以上のバイナリ ファイルを渡すと、TFVC は、そのファイルと比較対象の項目との間に相違点が存在するかどうかを示します。 TFVC が異なる種類のファイルを区別して扱う方法の詳細については、ファイルの種類の管理に関する記事を参照してください。

2 つのファイル名を指定すると、2 つのファイルが比較されます。 /version フラグを使用する代わりに、各ファイル名の末尾にセミコロンとバージョン指定子を追加することで、バージョンを指定できます。

1 つの itemspec のみを difference コマンドに渡す場合:

  • versionspec を指定しない場合、項目の現在のワークスペース バージョンが、既定で基本ワークスペース バージョンと比較されます。 たとえば、tf difference header.h は、現在のバージョンの "header.h" を "header.h" の基本になっているバージョンと比較します。

  • tf difference header.h;LBeta1 などの versionspecitemspec に含めると、TFVC はそのバージョンをディスク上の現在のワークスペース バージョンと比較します。

  • /version:C1~C4 などのバージョンの範囲を指定すると、その範囲の 2 つのエンドポイントにあるファイルのバージョンが比較されます。

tf コマンド ライン ユーティリティの使用方法の詳細については、「Team Foundation バージョン管理コマンドの使用」を参照してください。

出力形式の種類

/format オプションとともに使用される format パラメーターは、さまざまな出力形式を指定します。 次の出力の種類を使用できます。

  • Visual 形式の種類を使用すると、外部差分アプリケーションが開きます。 既定では、"diffmerge.exe" が起動されます。

  • Brief 形式は、比較対象のファイルが異なるかどうかを出力します。

  • Context 形式は、ファイルの相違点に関するコンテキスト行を提供します。 この形式は、UNIX ベースの diff -c 出力形式から派生します。

  • RCS 形式は /format:unix に似ていますが、コンテキスト行は提供されません。 ファイルの末尾に行の末尾マーカーが見つからない場合、特別な処理は行われません。

  • SS は、Visual SourceSafe の既定の差分出力形式です。 詳細については、「Diff (command line)」を参照してください。

  • 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" と、Azure DevOps サーバーからチェックアウトされたファイルのバージョンである "314.cs" のワークスペース バージョンの相違点を表示します。

c:\projects>tf difference 314.cs

次の例は、"src" フォルダー内で変更されたすべてのファイルを表示しますが、"src" のサブフォルダーで変更されたファイルは表示しません。

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

次の例は、"1254.cs" の changeset 3 と changeset 8 の相違点を表示します。

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

次の例は、ラベル release に属する "314.cs" のバージョンと changeset 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