如何确定我当前工作区中的变更集?
当然,我可以选择一个文件并查看其历史记录。但是,如果该文件最近未更新,则其更改集可能比同一解决方案中最近更新的文件旧。
我们可能犯的一个错误是我们在解决方案文件中查看历史记录,但解决方案文件很少更改,除非您添加新项目/进行解决方案级别的更改。
最终要弄清楚变更集我需要记住最新更改的文件是什么并查看其历史记录。
有更好的方法吗?
答案 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的答案):
启用tfs snapin (一次,如果还没有)
add-pssnapin Microsoft.TeamFoundation.PowerShell
使用tfs cmdlet获取当前的变更集ID
Get-TfsItemHistory <PATH_TO_PROJECT> -Recurse -Stopafter 1 -Version W
答案 4 :(得分:0)