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 Snapin を見てみましょう (選択するにはカスタム インストールが必要です)。

スナップインを 32 ビット PSH インスタンス ( Add-PSSnapin Microsoft.TeamFoundation.PowerShell) にロードした後、次を使用できます。

  • Get-TFSItemPropertyソース管理下にあるアイテムのリストを取得するフォルダー。
  • Update-TfsWorkspaceすべてまたは特定のファイル/フォルダーをワークスペースに取得または更新します。

更新: PowerToys を介して 32 ビット用にインストールした 64 ビット用の PSH TFS スナップインを自分でインストールできます (コメントを参照)。この場合、これは 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 }
}

スナップインを使用して最新バージョンを取得する方法が見つからなかったので、古い信頼できる tf.exe を使用する必要がありました。

于 2012-07-10T04:48:30.753 に答える