使用 TFS 命令行 tf.exe 如何将存储库复制到我选择的文件夹位置?

Using TFS command line tf.exe how can I copy a repo to a folder location of my choice?

我已经开始在我的 MSVS 2015 C++ 项目中使用 TFVC。我习惯于像 git/svn 这样的命令行回购,我可以在其中简单地执行 checkout/clone,等等...并将文件复制到我喜欢的任何文件夹。

因此,我已通过 MSVS2015 GUI 将我的工作区检出到映射位置 (c:\myworkspace)。但是现在我想 运行 我的自动测试脚本,它将最新的文件从 repo 复制到当前目录(例如 c:\auto运行)。自动测试脚本构建、测试并生成结果等...但我希望它只是覆盖我工作区中的内容,以防其他人添加更改.

我希望它转到我选择的其他文件夹。

在 Git 中,我将导航到文件夹 (cd c:\auto运行),然后执行 git clone <repo-path>。但我看不出这在 TFVC 的工作空间中是如何实现的。

到目前为止,我已经开始修改与 git 一起使用的脚本以获得此:

' Clean any existing files:
rmdir /S /Q <projname>

' Checkout project
tf checkout <projname> /recursive

' Do other stuff (build test etc...)

但这只适用于我的 c:\workspace - 我不想 delete/overwrite 我的本地更改。

您可以使用

创建一个新的(临时)工作区
cd temp
md newfolder
tf vc workspace /new ...
tf vc workfold /map $/Project/Folder c:\temp\newfolder
cd newfolder
tf vc get . /recursive
tf workspace /delete

或者您可以使用 Neno Loje 编写的小实用程序,TfsExport

从 OP 更新

假设我从要将项目解压缩到的文件夹开始。我使用了以下内容:

tf dir 显示我拥有的存储库:

D:\sandbox\tfs-test > tf dir
$/:
$tfsRepo1 
$tfsRepo2
$tfsRepo3 

我只想要前两个回购协议:

tf vc workspace /new /noprompt cit
tf vc get tfsRepo1 /recursive
tf vc get tfsRepo2 /recursive

然后整理:

tf workspace /delete cit /noprompt
rmdir /S /Q tfsRepo1 
rmdir /S /Q tfsRepo2

注意在不同地方使用 /noprompt,这样就不需要用户交互。