我们分支发布后,有一些需要更新的配置文件。目前,我正在获取特定(新)分支上所有源代码的最新版本。这非常耗时并占用大量磁盘空间。
有没有办法搜索/遍历特定分支,只获取符合特定条件的文件?
E.g:
Loop through files under branch on the TFS server
If file name matches "foo.proj" or file name matches "foo.ini"
Get latest version of the file
使用TF(tf get $/project/foo.proj
)的命令行界面可以很容易地获得“get”部分。我不确定如何在没有获得最新版本的情况下循环访问服务器对象。
答案 0 :(得分:2)
查看TFS PowerToys中的TFS PowerShell Snapin(您需要自定义安装才能选择)。
在32位PSH实例(Add-PSSnapin Microsoft.TeamFoundation.PowerShell
)中加载管理单元后,您可以使用:
Get-TFSItemProperty
在文件夹上获取源代码管理下的项目列表。Update-TfsWorkspace
将所有或特定文件/文件夹更新或更新到您的工作区。更新 :您可以通过PowerToys安装适用于32位的64位PSH TFS管理单元(请参阅注释),在这种情况下,这不仅限于32位PSH实例。
答案 1 :(得分:1)
我最后用过这个:
使用您下载的tftp.exe自定义安装TFS Powershell管理单元。
添加快照:
if ( (Get-PSSnapin -Name Microsoft.TeamFoundation.PowerShell -ErrorAction SilentlyContinue) -eq $null )
{
Add-PSSnapin Microsoft.TeamFoundation.PowerShell
}
Powershell脚本:
param( [string] $ServerBranchLocation )
$tfs=Get-TfsServer -name http://mytfsserver:8080/tfs
$TfExePath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe"
$matchFoo = "foofile.foo"
foreach ($item in Get-TfsChildItem $ServerBranchLocation -r -server $tfs)
{
if ($item -match $matchFoo)
{ & "$TFExePath" get $item.ServerItem /force /noprompt }
}
我找不到使用snap in获取最新版本的方法,所以我不得不使用ol'trusty tf.exe。