9

使用 Visual Studio 2008 工具,

我正在尝试获取更改集 14318 和 14317 的 ASCII 差异。

我可以使用 GUI 这样做:

tf changeset 14318

然后选择一个文件并右键单击并选择与以前的版本比较。但是,这有点乏味,而且它是基于 GUI 的。我手头的任务是将许多更改反向移植到不同的分支中。我想自动化测试(比如使用 Python),确保我做对了。好吧,出于教育目的,我将在不查看解决方案的情况下手动进行所有更改,然后我将比较两个更改并尝试寻找任何差异。这是我对 tf 的喜爱——我可以输入:

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

查看受影响文件的详细信息。

同样,我希望得到一个 out.txt,其中保存了所有差异。我很确定我可以处理 Python 部分。我当然想知道如何使用 tf.exe 工具来完成它,但如果您也碰巧知道完成此操作的其他技巧(一些很酷的 3rd 方工具或 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

你只是在调用它时没有使用正确的语法。在这种情况下,它尝试在您的工作副本和(不存在的)文件的基本存储库版本1431814317.

您需要做的是在 中使用变更集范围/version,如下所示:

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

请注意,您可以~与任何其他版本规范一起使用 - 标签、日期等。有关详细信息,请参见此处

于 2010-01-30T00:13:42.463 回答
1

这是一个 PowerShell (V2) 脚本,从 Pavel 的答案扩展而来,这将更加高效,因为我们找到了已更改的文件,然后让 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 回答