9

Visual Studio 2008ツールを使用して、

変更セット14318と14317のASCII差分を取得しようとしています。

GUIを使用してこれを行うことができます:

tf changeset 14318

次に、ファイルを選択して右クリックし、[以前のバージョンと比較]を選択します。ただし、これは少し面倒で、GUIベースです。私の目前の仕事は、多くの変更を別のブランチにバックポートすることです。テストを自動化して(たとえばPythonを使用して)、正しく実行したことを確認したいと思います。さて、教育目的のために、私は解決策を見ずにすべての変更を手作業で行い、次に2つの変更を比較して、違いを探すようにします。これが私がtfについて好きなことです-私はタイプすることができます:

tf changeset 14318 > out.txt&&notepad out.txt

影響を受けたファイルの詳細を表示します。

同様に、すべての違いが保存されたout.txtを取得したいと思います。私はPythonの部分を処理できると確信しています。私は間違いなくtf.exeツールを使用してそれを行う方法を知りたいですが、これを達成するための他のトリックも知っている場合は(いくつかのクールなサードパーティツール、またはPowerShellスクリプトも教えてください)。

ありがとうございました!

ああ、ちなみに、私はこれをチェックしました:http: //msdn.microsoft.com/en-us/library/6fd7dc73 (VS.80).aspx

そして私はこれを試しました:

tf diff 14318 14317

そして、私はこのエラーを受け取りました:ファイル(またはフォルダー)c:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ VC\14318は存在しません。

よろしくお願いします。

編集:これを行うことができるツールはありますか?

4

2 に答える 2

27

呼び出すときに正しい構文を使用していないだけです。14318この場合、(存在しない)ファイルとの作業コピーとベースリポジトリバージョンを比較しようとしました14317

代わりに行う必要があるのは/version、次のように、でチェンジセット範囲を使用することです。

tf diff $/Foo /version:C14317~C14318 /recursive /format:unified > foo.diff

~ラベル、日付など、他のバージョン仕様で使用できることに注意してください。詳細については、ここを参照してください。

于 2010-01-30T00:13:42.463 に答える
1

これは、Pavelの回答から拡張されたPowerShell(V2)スクリプトです。変更されたファイルを見つけて、tfに個別に差分させるため、パフォーマンスが向上します。

Write-Host "Checking if TFS snap-in has been added..." -ForegroundColor green

# Find all TFS snapins.
$snapins = Get-PSSnapin -Registered | Where-Object { $_.Name -like "*TeamFoundation*" } 

foreach($snapin in $snapins)
{ 
    # Add snapin if not already added.
    $exists = Get-PSSnapin | Where-Object { $_.Name -eq $snapin.Name } 
    if (!$exists)
    {
        Write-Host "Adding Snapin " $snapin.Name -ForegroundColor green 
        Add-PSSnapin $snapin.Name 
    }
    else
    {
        Write-Host "Snapin already added." -ForegroundColor green
    }
}



# Get TFS Server object reference.
$tfs_server = Get-TfsServer -Name $/<serverName>/<RepoDir>

# Get list of changed files 
$changes_from_changeset = Get-TfsChangeset -ChangesetNumber 829 | Select -Expand Changes | % { $_.Item.ServerItem }
#$changes_from_changeset

foreach($change in $changes_from_changeset)
{
    &"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe" diff $change /version:829~T /format:unified
}
于 2010-08-30T07:24:00.397 に答える