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


80

如何确定本地工作区中当前具有的变更集?

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

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

最后,找出变更集,我需要记住最新的文件更改是什么并查看其历史记录。

有一个更好的方法吗?


您为什么想知道当前的变更集?
Ewald Hofman

当您的工作空间不代表变更集时会发生什么?假设您已$/A映射,并且已检索变更集A,已$/B映射,并且已检索变更集B。工作区位于哪个变更集?
爱德华·汤姆森,

8
@Ewald考虑及时返回以查找错误何时开始发生。这可能需要在工作空间上多次执行“获取特定版本”操作,以获取以前的变更集,这可能非常繁琐,冗长且容易出错。能够分辨出当前工作空间上哪个精确的变更集对于避免任何分散注意力的错误并确定罪魁祸首非常有用。我很高兴今天找到了这个命令。
2014年

1
我赞扬这个问题!
费尔南多·埃斯皮诺萨

欢迎使用5年以上。为了回答@EwaldHofman的问题,在我的场景中,我在工作空间中进行了几处更改,并且我想看看自从我执行上一次“获取”以来服务器上发生了什么变化。就我而言,我不知道我上次“了解”哪个版本。
JMD

Answers:



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秒。

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


1
优秀的替代品。将我的运行时间从55秒降低到1.5秒。谢谢!
bobroxsox

1
....回想起来-令我惊讶的是我可以使用msvc,并且很高兴这只是我过去必须面对的事情。
约翰·伦德伯格

3

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

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

2
谢谢!没有该答案,我仍然想知道为什么该命令在Visual Studio的“命令窗口”窗格中不起作用。
ojdo

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


0

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

  1. 选择您要确定的更改集并进行比较: 在此处输入图片说明
  2. 如果没有区别: 在此处输入图片说明

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

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

  1. **如果您不确定具有待更改的文件是否也实际上不是最新的,则可以使用以下属性检查该文件的版本: 在此处输入图片说明
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.