获取所有历史、变更集中文件的所有版本
Posted
技术标签:
【中文标题】获取所有历史、变更集中文件的所有版本【英文标题】:Get all versions of the file in all history, changesets 【发布时间】:2021-11-29 13:25:41 【问题描述】:是否有一个tf command
可以从所有变更集中提取所有版本的config.json
文件?
我想看看它在开发过程中是如何改变的。
我使用 Team Foundation Server 2012 (v11)。
【问题讨论】:
您仍在使用 TFS 11 有什么原因吗?现在已经不支持了。您无法在 Visual Studio 中查看文件的历史记录吗? @spikey_richie 客户使用它。是的,我可以查看每个单独文件的历史记录并查看更改,效果非常好。我需要分析历史记录中多个文件的更改并识别更改,因此我需要为此配置文件导出所有可用的历史记录。手动提取文件的变更集太多。 【参考方案1】:您需要编写脚本...使用 PowerShell 或类似的东西。
用途:
tf history /collection:https://server/collection $/project/path/file /format:brief /noprompt
获取文件的所有唯一变更集。提取表中每一行的数字。正则表达式是一种简单的方法...每行上的^\d+
应该从每行的开头获取数字。
然后创建一个本地工作区来获取文件的副本,基本结构应该如下所示,但您需要编写循环和变量插入脚本:
md temp
cd temp
tf workspace /new /noprompt temporary-workspace /collection:https://server/collection
tv workfold /map $/project/path . /collection:https://server/collection
## foreach changesetnumber in history
tf get /version:cchangesetnumber /overwrite /force /noprompt $/project/path/config.json
copy config.json ..\config.json.changesetnumber
## end forach
tf workspace /delete temporary-workspace
这应该为每个变更集创建一个编号的文件副本。
下面的powershell脚本对我有用,但还是有点粗糙:
$tf = "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\TF.exe"
$collectionUri = "https://dev.azure.com/jessehouwing"
$path = '$/agile2017'
$file = "xxxxxxx"
$history = & $tf history /collection:$collectionUri $path/$file /format:brief /noprompt
$changesets = $history | % Select-String -InputObject $_ -Pattern "^\d+"
$changesets = $changesets.Matches | % $_.value
cd $env:temp
md temporary-workspace -force
md history -Force
cd temporary-workspace
& $tf workspace /new /noprompt temporary-workspace /collection:$collectionUri
& $tf workfold /map $path .
foreach ($changeset in $changesets)
& $tf get /version:c$changeset /overwrite /force /noprompt $path/$file
copy "$file" "..\history\$file.$changeset" -Force
& $tf workspace /delete temporary-workspace
cd ..
rd temporary-workspace -Recurse
【讨论】:
我假设tf vc
用于较新的版本,因为我得到“无法识别的命令:vc。”。没有 'vc' 可以正常工作,只需 tf history...
。
是的,Visual Studio 2017 添加了“vc”和“git”限定符。如果您使用的是旧版本,请忽略“vc”添加。
您也可以使用较新版本的 VS 毫无问题地连接到 TFS,有时您会获得一些性能提升和一些以前需要 TFS Power Tools 的额外命令。
很高兴它有效!随时编辑/更新您必须进行任何调整的答案。
它有效,但我也希望历史中哪些文件是从共同祖先合并的,哪个是共同祖先更明显。所以我只是发布了更精确的问题。以上是关于获取所有历史、变更集中文件的所有版本的主要内容,如果未能解决你的问题,请参考以下文章