获取TFS工作区上的当前变更集id

获取TFS工作区上的当前变更集id,tfs,Tfs,如何确定本地工作区中当前有哪些变更集 当然,我可以选择一个文件并查看其历史记录。但是,如果该文件不是最近更新的,则其变更集可能比同一解决方案中最近更新的文件旧 我们可能会犯的一个错误是,我们查看解决方案文件上的历史记录,但是解决方案文件很少更改,除非您添加新项目/进行解决方案级别的更改 最后,为了找出更改集,我需要记住最新更改的文件,并查看它们的历史记录 有更好的方法吗?你的答案在Buck Hodges的MSDN博客上: 从工作区的根目录(顶部),在cmd中执行: tf history . /r

如何确定本地工作区中当前有哪些变更集

当然,我可以选择一个文件并查看其历史记录。但是,如果该文件不是最近更新的,则其变更集可能比同一解决方案中最近更新的文件旧

我们可能会犯的一个错误是,我们查看解决方案文件上的历史记录,但是解决方案文件很少更改,除非您添加新项目/进行解决方案级别的更改

最后,为了找出更改集,我需要记住最新更改的文件,并查看它们的历史记录


有更好的方法吗?

你的答案在Buck Hodges的MSDN博客上:

从工作区的根目录(顶部),在cmd中执行:

tf history . /r /noprompt /stopafter:1 /version:W

如果要使用PowerShell(;相当于的答案):

  • 启用tfs管理单元(一次,如果尚未启用)

    在Microsoft.TeamFoundation.PowerShell中添加pssnapin

  • 使用tfs cmdlet获取当前变更集id

    Get-TfsItemHistory-Recurse-Stopafter 1-Version W


  • 使用
    tf.exe历史记录的常见答案/r
    直接起作用,但速度非常慢。在我们的例子中,需要10-15秒。 我现在使用两个阶段的检查,首先检查一些任意文件的版本(我使用根文件夹中的文件)

    使用powershell:

    $tfexepath = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe"
    $localpath = "C:\some\tfs\directory"
    
    $result = & $tfexepath history $localpath /noprompt /stopafter:1 /version:W 
    "$result" -match "\d+" | out-null
    $id = $matches[0]
    
    然后使用/r标志从根目录进行搜索,但将搜索限制为从上面找到的修订版开始:

    $result2 = & $tfexepath history $localpath /r /noprompt /stopafter:1 /version:$id~W        
    "$result2" -match "\d+" | out-null
    $id2 =  $matches[0]
    
    #result:
    Write-Host $id2 
    
    对于我们的代码库,这将总时间从10-15秒减少到1.4-1.5秒

    据我所知,没有缺点或局限性,但我认为在一个小型存储库中可能会更慢。-我很高兴知道。

    运行Visual Studio CMD(在我的例子中,VS2015被称为:“开发者命令Promp for VS2015”),然后进入项目文件夹并执行以下命令:

    tf history . /r /noprompt /stopafter:1 /version:W
    

    如果你真的不知道你有什么版本,你应该使用其他建议的方法之一。如果您不确定是否有特定的版本,或者在几个更改集之间不确定,并且您更喜欢使用VS TFS GUI,则可以暂停以下步骤:

  • 选择要确定的更改集并进行比较:
  • 如果没有区别:

    或者,如果唯一不同的文件是您在中有挂起更改的文件:

  • 这意味着您对所讨论的版本是最新的

  • **如果您不确定具有挂起更改的文件是否实际上也不是最新的,则可以使用以下属性检查该文件版本:

  • 为什么您想知道您当前的变更集?当您的工作区不代表变更集时会发生什么?考虑到你已经有了<代码> $/A >代码>,并且你已经检索了变更集A,并且你有了<代码> $/b映射,并且你已经检索了变更集B。你的工作空间是什么变更集?这可能需要在您的工作区上多次执行“获取特定版本”操作,以获取以前的变更集,这些变更集可能非常繁琐、冗长且容易出错。能够辨别工作区中当前存在哪个精确的变更集对于避免任何分散注意力的错误和确认罪魁祸首非常有用。我很高兴今天找到了这个命令。我推荐这个问题!欢迎来到5年后。为了回答@Ewaldofman的问题,在我的场景中,我在我的工作区中做了一些更改,我想看看自从我上次“获取”以来服务器上发生了什么变化。在我的情况下,我不知道我最后得到的是什么版本。很好的选择。使我的运行时间从55秒降低到1.5秒。谢谢回首往事——我很惊讶我能和msvc生活在一起,很高兴这是我过去不得不处理的事情。谢谢!如果没有这个答案,我仍然想知道为什么visualstudio中的“commandwindow”窗格中的命令不起作用。