8

我正在尝试使用 Powershell 从 TFS 中“获取最新版本”的特定文件夹。

我已经安装了 TFS Snappin,并且一直在 PowerShell 中使用 TFS Power Tools cmdlet(例如 Get-TfsChildItem 和 Select-TfsItem 等)[我如何设置 TFS PowerShell Snapin ],并浏览了他们的文档(我没有找不到足够的解释!)。

当我尝试从 TFS 获取整个文件夹结构的最新版本时,对要使用的确切 cmdlet 感到困惑,该结构映射到我的本地驱动器(而不仅仅是变更集或 ChildItem)。

示例:Tfs 路径 - $/APD-RepairSolutions/Main/Database

映射路径 - D:\TFS\APD-RepairSolutions/Main/Database。

我想要一个代码,它将迭代地获取整个文件夹数据库的最新版本,(具有表数、存储过程等)

我在用 ..

PS D:\Tfs\APD-RepairSolutions\Main\Database> $server=Get-TfsServer -Name http://tfs:8080/tfs

PS D:\Tfs\APD-RepairSolutions\Main\Database> Get-TfsChangeset -Recurse -Server $Server

对我的情况没有帮助 - 因为它只返回当前目录中的最新变更集。

4

3 回答 3

8

要获取最新的 ( tf get),请使用Update-TfsWorkspace.

Get-TfsChangeset相当于tf changeset

于 2014-03-10T21:51:57.273 回答
2

明白了!使用更新-TFSWorskspace。也有一些有用的参数。-Items用于指定要更新的确切项目。

PS D:\Tfs\APD-RepairSolutions\Main>Update-TFSWorkspace -All -Overwrite -Force -Recurse -Items .\Database

工作区被更新版本的项目取代。谢谢@Kmoraz!

于 2014-03-14T09:43:43.023 回答
2

如果您想改用 TFS API,可以使用Workspace.Get 方法

# Load the TFS assemblies
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client")
$ws = $vcServer.QueryWorkspaces("<WORKSPACENAME>", $null, $null);

# Specify properties of intended workspace get
$recursionType = [Microsoft.TeamFoundation.VersionControl.Client.RecursionType]::Full
$latestVersion = [Microsoft.TeamFoundation.VersionControl.Client.VersionSpec]::Latest
$getOptions = [Microsoft.TeamFoundation.VersionControl.Client.GetOptions]::GetAll

# Get what I want!
$ws.Get("$/Remote/Folder", $latestVersion, $recursionType, $getOptions)

在Querying Workspaces时用您的域登录名和计算机名替换空值是个好主意。

于 2017-01-04T01:56:35.457 回答