2009-08-27 10 views
3

私は別のソース管理ツールを使用していました。バージョンXとバージョンYの間のファイルに加えられたすべての変更(各バージョン間で追加/削除された行も含めて、バージョン)を1つのテキストファイルに保存します。あなたのファイルにいくつかのコードがあったのは確かですが、今はそうではないことを確信している状況では、かなり役に立ちました(あなたのBAが何かを追加すると便利だと思っています。 )。TFSから複数バージョンの差分レポートを入手できますか?

ここでの利点は、コードベースのすべての変更を含む1つのテキストファイルを取得して検索できることです。これは、すべてのバージョン(10〜9,9〜8など)で比較を行い、各比較の結果をテキストファイルに保存するのと同じです。

私はTFSでこれを行う簡単な方法はありません。これを行うプラグイン/パワーツールがありますか? Googleは私に何も与えなかった。

+0

このようなものをお探しですか? http://stackoverflow.com/questions/782145/how-do-you-see-the-changes-for-a-version-in-tfsもしあなたがホットメールで私にメールkanerazを撃ってくれたら、あなたにコード私は私たちのラベルdiffのために働くように変更しました。 – Ryan

答えて

3

パベルが私に正しい方向に向かいましたが、私が終わったスクリプトはもっと複雑でした。それでも正しいとは限りません。私はファイル名の変更を考慮する必要がありました。

$snapin = get-pssnapin | select-string "Microsoft.TeamFoundation.PowerShell" 

if ($snapin -eq $null) { 
Write-Host "loading snap in..."  
    Add-PSSnapin Microsoft.TeamFoundation.PowerShell 
    } 

$fileName = $args[0] Write-Host "// File name " $fileName 
$results = @(Get-TfsItemHistory $fileName) | select changesetid, @{name="Path"; expression={$_.changes[0].item.serveritem}} 

$i = 0 

$cmdArray = @() 

do { 
    if ($results[$i+1] -ne "") { 
    $cmdArray += "tf diff ""{0};{1}"" ""{2};{3}"" /format:unified" -f $results[$i].Path, $results[$i].ChangeSetId, $results[$i+1].Path, $results[$i+1].ChangeSetId  
    } ; 
    $i++ 
} until ($i -ge ($results.length - 1)) 

foreach ($cmd in $cmdArray) { 
    #Write-Host "// " $cmd 
    iex $cmd } 
4

私はすぐに使える解決策を認識していません。ただし、TFS Power ToysとPowerShellをお持ちの場合は、自分で作成することは難しくありません。

Add-PSSnapin Microsoft.TeamFoundation.PowerShell 

Get-TfsItemHistory foo.cs | foreach { 
    tf diff "foo.cs;C$($_.ChangesetId)" ` 
      "foo.cs;C$($_.ChangesetId - 1)" ` 
      /format:unified 
} 
+0

さて、いいアイデアです。ただし、「Add-PSSnapin:Windows PowerShellスナップインはバージョン1では使用できません。 私はPS 2.0が必要です。私のシステムでは利用できないようです。 – jcollum

+0

このエラーメッセージは、システムにスナップインがインストールされていないことを示しています。 TFPTの最新バージョンをお持ちで、インストール中に「PowerShell」オプションのチェックを外さなかったことはありますか?最新のインストーラは次のとおりです。http://www.microsoft.com/downloads/details.aspx?FamilyId=FBD14EEA-781F-45A1-8C46-9F6BA2F68BF0&displaylang=en –

+0

また、64ビットWindowsを実行している場合は、 TFS PowerShellスナップインは32ビットのみであるため、32ビットPowerShellを使用して実行する必要があります(32ビットシェルの場合は、PSインストーラによって別のアイコンを作成する必要があります)。 –