获取所有历史记录、变更集中文件的所有版本
Get all versions of the file in all history, changesets
是否有 tf command
可以从所有变更集中提取 config.json
文件的所有版本?
我想看看它在开发过程中是如何变化的
我使用 Team Foundation Server 2012 (v11)。
您需要编写脚本...使用 PowerShell 或类似工具。
使用:
tf history /collection:{{https://server/collection}} {{$/project/path/file}} /format:brief /noprompt
获取文件的所有唯一变更集。提取 table 中每一行的数字。正则表达式是一种简单的方法......每行的 ^\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:c{{changesetnumber}} /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 Studio19\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 command
可以从所有变更集中提取 config.json
文件的所有版本?
我想看看它在开发过程中是如何变化的
我使用 Team Foundation Server 2012 (v11)。
您需要编写脚本...使用 PowerShell 或类似工具。
使用:
tf history /collection:{{https://server/collection}} {{$/project/path/file}} /format:brief /noprompt
获取文件的所有唯一变更集。提取 table 中每一行的数字。正则表达式是一种简单的方法......每行的 ^\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:c{{changesetnumber}} /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 Studio19\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