我正在使用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工具查看这些变更集时,它们有许多已更改的行,变更集不为空。
这件事怎么了?我应该提交错误报告吗?对我来说这看起来像个错误。
也许这与它有关:最后一个有效的差异给了我“ \文件末尾没有换行”。
答案 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控制台所使用的,所以这就是我在原始说明中的内容。