以编程方式编写 TFS 命令行以获取最新版本、签出和签入

Posted

技术标签:

【中文标题】以编程方式编写 TFS 命令行以获取最新版本、签出和签入【英文标题】:Scripting TFS Command Line for Get Latest Version, Check Out and Check in, programmatically 【发布时间】:2011-04-15 08:05:49 【问题描述】:

我使用 WinXP、VS 2008 和 Team Explorer 连接到 Team Foundation Server。

我需要编写以下脚本(例如 BAT 文件脚本):

在团队项目中获取最新版本的文件夹。 签出团队项目中文件夹的文件。 签入团队项目中文件夹的文件。

我的 TFSProject 是$/Arquitectura/Main/,映射到路径C:\TFS\Arquitectura

有人有任何示例代码或建议吗?

【问题讨论】:

【参考方案1】:

在命令行中使用 tf.exe。

在以下示例中,%PathToIde% 通常位于如下路径:%ProgramFiles%\Microsoft Visual Studio 9.0\Common7\IDE,或在 Windows x64 上:%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE(取决于 Visual Studio 版本和安装设置)。

获取示例:

cd C:\TFS\Arquitectura
"%PathToIde%\TF.exe" get $/Arquitectura/Main /recursive

结帐示例:

cd C:\TFS\Arquitectura
"%PathToIde%\TF.exe" checkout $/Arquitectura/Main /recursive

签到示例:

cd C:\TFS\Arquitectura
"%PathToIde%\TF.exe" checkin $/Arquitectura/Main /recursive

有关tf commandline的更多信息,请参阅。

【讨论】:

"%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe" 在 Win x64 上为 VS 2010 获取 $/Project /recursive。感谢您的意见,非常有用! "%VS120COMNTOOLS%..\IDE\TF.exe" get $/PROJECT_NAME /recursive for VS2013 抱歉挖掘了这篇旧帖子,但我有一个问题:使用不同的本地 TFS 工作区时,我在哪里指定要使用的工作区?还是当前工作目录暗示了这一点?【参考方案2】:

VS2017 更新

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe'

【讨论】:

评论胜于回答。 感谢专业的“C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\TF.exe”【参考方案3】:

"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\tf.exe" 获取 "$/ProjectName/Main" /force /recursive

【讨论】:

@Neolisk 为什么建议在这种标准情况下使用/force【参考方案4】:

获取 Windows 7 64 位的最新代码

"%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe" get /recursive

这对我有用。

【讨论】:

【参考方案5】:

Visual Studio 2022 更新

创建一个批处理文件以从 TFS 获取最新版本。 以.bat 扩展名保存此文件

TakeLatest.bat

@echo off
title Project Builder
echo Taking Latest of All Projects which are listed here

cd /d %~dp0

call "C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\TF.exe" get /recursive

pause

注意:cd /d 是您的项目文件夹位置驱动器

适用于 Visual Studio 2019

用这一行更新成批处理文件,

call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\TF.exe" get /recursive

【讨论】:

【参考方案6】:

我在 Windows 10 64 位的 Powershell 中尝试了以下代码,它对我有用:

cd C:\MyWorkspace & "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\TF.exe" 获取 $/TFSFolderPath /recursive

请注意,第二行以与号 (&) 开头,没有它我的代码将无法工作,但不知道它的原因。

【讨论】:

Found explanation for the & Call operator。用引号将命令括起来会使 PowerShell 将其视为字符串,因此除了引号之外,使用 & 调用运算符强制 PowerShell 将字符串视为要执行的命令。

以上是关于以编程方式编写 TFS 命令行以获取最新版本、签出和签入的主要内容,如果未能解决你的问题,请参考以下文章

通过命令行从 TFS 签出存储库

Visual Studio SCC API - 以编程方式签出文件

如何在脱机时以编程方式确定本地文件是不是受 TFS 版本控制

TFS命令tf:undo(强制签入别人签出的文件)(转)

TFS强制删除离职人员签出锁定项的方法(转)

TFS强制撤销签出