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

3

我开始使用TFVC来管理我的MSVS 2015 C ++项目。我习惯于像git / svn这样的命令行版本库,可以轻松地进行checkout / clone等操作,然后将文件复制到任何我喜欢的文件夹中。

因此,我通过MSVS2015 GUI将工作区映射到了一个已映射位置(c:\ myworkspace)。但现在我想运行自动化测试脚本,该脚本将从存储库中复制最新文件到当前目录(例如c:\ autorun)。自动化测试脚本构建、测试和生成结果等等...但是如果有人添加了更改,我不希望它只是覆盖我的工作区。

我想让它去到我选择的另一个文件夹。

在Git中,我只需导航到文件夹(cd c:\ autorun),然后执行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目录-我不想删除/覆盖我的本地更改。
1个回答

4
您可以使用以下代码创建一个新的(临时)工作区:

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,以便无需用户交互。

1
这太棒了!做得真好 :) 我不得不稍微修改你的脚本才能让它在没有提示出现的情况下运行 - 我会在你的帖子中添加一个编辑。你能解释一下 "." 在你的 get 中是什么作用吗? - 它只是指向当前文件夹吗? - code_fodder
这是为了确保您将文件下载到当前工作区中刚创建的工作区中。 - jessehouwing

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