获取TFS工作空间的当前变更集ID

时间:2011-10-13 00:15:12

标签: tfs

如何确定我当前工作区中的变更集?

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

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

最终要弄清楚变更集我需要记住最新更改的文件是什么并查看其历史记录。

有更好的方法吗?

5 个答案:

答案 0 :(得分:93)

您的答案在Buck Hodges的MSDN博客上:How to determine the latest changeset in your workspace

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

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

答案 1 :(得分:2)

直接使用tf.exe history . /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秒。

据我所知,没有任何缺点或限制,但我想在一个小型存储库中它可能会更慢。 - 我很高兴知道。

答案 2 :(得分:2)

运行一个Visual Studio CMD(在我的情况下,对于VS2015称为:“ VS2015的开发人员命令提示符”),然后进入您的项目文件夹并执行以下命令:

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

答案 3 :(得分:0)

如果您想使用PowerShell(see also;相当于@kroonwijk的答案):

  1. 启用tfs snapin (一次,如果还没有)

    add-pssnapin Microsoft.TeamFoundation.PowerShell

  2. 使用tfs cmdlet获取当前的变更集ID

    Get-TfsItemHistory <PATH_TO_PROJECT> -Recurse -Stopafter 1 -Version W

答案 4 :(得分:0)

如果您真的不知道要使用哪个版本,则应使用其他建议的方法之一。如果您不确定是否具有特定版本,或者不确定是否有几个变更集,并且希望使用VS TFS GUI进行操作,则可以执行以下步骤:

  1. 选择要确定的更改集并进行比较: enter image description here
  2. 如果没有区别: enter image description here

    ,或者,如果唯一不同的文件是您有待更改的文件: enter image description here

这意味着您正在使用最新版本。

  1. **如果您不确定具有待更改的文件是否实际上也不是最新的,则可以使用以下属性检查该文件的版本: enter image description here