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

时间:2017-01-10 18:22:35

标签: visual-studio tfs tfvc

我已经开始在我的MSVS 2015 C ++项目中使用TFVC了。我习惯于命令行repos,比如git / svn,我可以在那里简单地进行结账/克隆等等......并将文件复制到我喜欢的任何文件夹中。

因此,我已通过MSVS2015 GUI将我的工作区检出到映射位置(c:\ myworkspace)。但现在我想运行我的自动测试脚本,它会将最新文件从repo复制到当前目录(例如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 个答案:

答案 0 :(得分:2)

您可以使用

创建一个新的(临时)工作区
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更新

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

显示我有的回购:

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