使用Powershell从TFS获取文件夹的最新版本

8

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

我已经安装了TFS Snappin,并且一直在使用PowerShell中的TFS Power Tools cmdlets(例如Get-TfsChildItem和Select-TfsItem等)[如何设置TFS PowerShell Snapin],并查看了它们的文档(但我觉得解释不够清楚!)。

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

例如:TFS路径-$ / APD-RepairSolutions / Main / Database

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

我希望有一个代码,可以迭代地获取整个文件夹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

对于我的情况没有帮助——它仅返回当前目录中最新的更改集。


你尝试过 TFS Power Tools 命令行工具了吗? - Kiquenet
3个回答

8

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

Get-TfsChangeset 等同于 tf changeset


2

使用Update-TFSWorskpace时要注意!它还有一些有用的参数。其中-Items用于指定您想要更新的确切项目。

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

工作区已经被更新版本的项目所替代。感谢 @Kmoraz!

2
我只想说开关应该是单数形式 -Item 而不是复数形式 _-Items_。 - TNV

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)

查询工作区时,将null替换为您的域登录名和计算机名称可能是一个好主意。


1
太好了!作为参考,将GetOptions更改为Overwrite似乎与Visual Studio中的“获取最新版本”相匹配:.....GetOptions] :: Overwrite - AndrewRalon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接