【问题标题】:tf diff: why doesn't the command line diff recognize a valid version of a file sometimes?tf diff:为什么命令行 diff 有时不能识别文件的有效版本?
【发布时间】:2016-02-18 23:37:15
【问题描述】:

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

$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 工具查看这些变更集时,它们有很多行已更改,变更集不是空的。

这东西怎么了?我应该提交错误报告吗?这对我来说似乎是一个错误。

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

【问题讨论】:

    标签: tfs


    【解决方案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"
    

    [EDIT] 第一个命令应该打印如下内容:

    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 控制台使用的,所以这就是我在原始说明中输入的内容。

    【讨论】:

    • 这是即兴脚本吗?运行时出现各种问题。
    • 你是对的,有一个重命名破坏了我的脚本,谢谢!
    • 脚本是即兴的,但它确实有效。我已经编辑了答案以显示输出(这是我所期望的)。
    • 当我运行这个 1) tfhistory 无法识别 2) -all 是 tf 历史记录的无法识别命令。当我将其修改为 tf history " $filename | select changesetid, @{name="Path"; expression={$_.changes[0].item.serveritem}} | ft -auto" 我得到很多“Select-对象:无法索引到空数组。”错误。你的剧本至少让我朝着正确的方向前进。
    • 您是否从 Power Tools 控制台加载别名?开始 -> MS TFS Power Tools -> PowerShell 控制台会自动完成。如果没有,它们位于 Power Tools 安装目录的 TfsSnapin.ps1 中,您可以在 $profile 中点源。或者,您可以使用完整的 cmdlet 名称“Get-TfsItemHistory”。
    猜你喜欢
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 2015-11-28
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    相关资源
    最近更新 更多