88

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

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

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

最后要弄清楚变更集,我需要记住最新的文件更改了什么并查看它们的历史记录。

有一个更好的方法吗?

4

5 回答 5

113

您的答案在 Buck Hodges 的 MSDN 博客上:如何确定工作区中的最新变更集

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

tf history . /r /noprompt /stopafter:1 /version:W
于 2011-10-13T20:31:56.960 回答
4

直接使用的常见答案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 秒。

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

于 2018-01-20T15:33:25.790 回答
4

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

tf history . /r /noprompt /stopafter:1 /version:W
于 2018-10-25T15:03:43.327 回答
1

如果你想使用 PowerShell(另见;相当于@kroonwijk的回答):

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

    add-pssnapin Microsoft.TeamFoundation.PowerShell

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

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

于 2017-08-17T10:02:44.323 回答
1

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

  1. 选择您想要确定的变更集并进行比较: 在此处输入图像描述
  2. 如果你没有区别: 在此处输入图像描述

    或者,如果唯一不同的文件是您有待更改的文件: 在此处输入图像描述

这意味着您是最新版本的相关版本。

  1. ** 如果您不确定具有待处理更改的文件是否实际上也不是最新的,您可以使用属性检查该文件版本: 在此处输入图像描述
于 2019-12-11T11:27:08.167 回答