tf diff:为什么命令行diff有时不能识别文件的有效版本?

时间:2009-08-28 16:37:40

标签: tfs

我正在使用TFS Power Toys和PowerShell来获取文件的历史记录。像这样:

$fileName = "$/MyDir/MyFile.cs"     
$results = @(Get-TfsItemHistory $fileName )

我得到一个包含许多ChangesetId的好结果集。但是,当我为某些ChangesetIds运行tf diff(tf diff /version:C36826~C36680 "$/MyDir/MyFile.cs" /format:unified)时,我得到了:

Item $/MyDir/MyFile.cs;C37400 was not found in source control.

但是我可以使用Visual Studio中的比较工具来比较这两个版本的文件。难道我做错了什么?它似乎与文件的年龄没有任何关系,在某些情况下,命令行diff将显示变更集,但不会显示当天早些时候发生的变更集。当我使用gui工具查看这些变更集时,它们有许多已更改的行,变更集不为空。

这件事怎么了?我应该提交错误报告吗?对我来说这看起来像个错误。

也许这与它有关:最后一个有效的差异给了我“ \文件末尾没有换行”。

1 个答案:

答案 0 :(得分:1)

我敢打赌这个文件已被重命名。幸运的是,你已经在使用Powershell了,所以这一点非常简单:

tfhistory "$/MyDir/MyFile.cs" -all | select changesetid, @{name="Path"; expression={$_.changes[0].item.serveritem}} | ft -auto

然后,您需要使用稍微详细的语法运行diff:

tf diff "$/MyOtherDir/MyFile.old.cs;1234" "$/MyDir/MyFile.cs;5678"

[编辑]第一个命令应该打印如下:

C:\workspaces\temp> tfhist rentest2 -all | select changesetid, @{name="Path"; expression={$_.changes[0].item.serveritem}} | ft -auto


ChangesetId Path                       
----------- ----                       
      10725 $/Test-ConchangoV2/rentest2
      10142 $/Test-ConchangoV2/rentest 

正如你所看到的,我个人将Get-TfsItemHistory别名为'tfhist'以便更短的打字。 'tfhistory'就是Power Tools中的PS控制台所使用的,所以这就是我在原始说明中的内容。