如何确定本地工作区中当前具有的变更集?
当然,我可以选择一个文件并查看其历史记录。但是,如果该文件不是最近更新的,则其更改集可能早于同一解决方案中最近更新的文件。
我们可能犯的一个错误是,我们查看解决方案文件上的历史记录,但是除非您添加新项目/进行解决方案级别的更改,否则解决方案文件很少更改。
最后,找出变更集,我需要记住最新的文件更改是什么并查看其历史记录。
有一个更好的方法吗?
如何确定本地工作区中当前具有的变更集?
当然,我可以选择一个文件并查看其历史记录。但是,如果该文件不是最近更新的,则其更改集可能早于同一解决方案中最近更新的文件。
我们可能犯的一个错误是,我们查看解决方案文件上的历史记录,但是除非您添加新项目/进行解决方案级别的更改,否则解决方案文件很少更改。
最后,找出变更集,我需要记住最新的文件更改是什么并查看其历史记录。
有一个更好的方法吗?
$/A
映射,并且已检索变更集A,已$/B
映射,并且已检索变更集B。工作区位于哪个变更集?
Answers:
您的答案在Buck Hodges的MSDN博客上:如何确定工作区中的最新变更集
从工作区的根(顶部),以cmd执行:
tf history . /r /noprompt /stopafter:1 /version:W
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秒。
据我了解,没有缺点或局限性,但我想在一个很小的存储库中它可能会变慢。-我很高兴知道。
如果要使用PowerShell(另请参见;等效于@kroonwijk的答案):
启用tfs snapin (一次,如果尚未启动)
add-pssnapin Microsoft.TeamFoundation.PowerShell
使用tfs cmdlet获取当前的变更集ID
Get-TfsItemHistory <PATH_TO_PROJECT> -Recurse -Stopafter 1 -Version W