0

在我们分支发布后,有一些配置文件需要更新。目前,我正在获取特定(新)分支上所有源代码的最新版本。这很耗时并且占用大量磁盘空间。

有没有办法搜索/循环遍历特定分支并且只获取符合特定条件的文件?

例如:

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

“get”部分很容易使用 TF ( tf get $/project/foo.proj) 的命令行界面。我不确定如何在不首先获取最新版本的情况下遍历服务器对象。

4

2 回答 2

2

查看 TFS PowerToys 中的 TFS PowerShell 管理单元(您需要自定义安装才能选择)。

在 32 位 PSH 实例 ( Add-PSSnapin Microsoft.TeamFoundation.PowerShell) 中加载管理单元后,您可以使用:

  • Get-TFSItemProperty在文件夹上获取源代码管理下的项目列表。
  • Update-TfsWorkspace获取或更新所有或特定文件/文件夹到您的工作区。

更新:您可以自己安装 64 位的 PSH TFS 管理单元,通过 PowerToys 安装 32 位(请参阅评论),在这种情况下,这不仅限于 32 位 PSH 实例。

于 2012-07-09T10:04:41.383 回答
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。

于 2012-07-10T04:48:30.753 回答