你可以在不需要工作空间的情况下完成TFS吗?

Mat*_*att 9 tfs tfs2010

我正在尝试将构建脚本从使用SourceSafe更改为TFS,而不使用MsBuild(尚未).

一个小问题是工作区目录由脚本重命名和存档,这使得TFS认为它不需要获取任何文件.即使使用/ force标志,它也只是获取目录而不获取源文件.

我目前正在使用

TF.exe get "Product/Main/Project1"  /force /recursive /noprompt
Run Code Online (Sandbox Code Playgroud)

为了节省我在脚本中管理工作空间或使用中间目录,有没有人知道可以获取目录和代码而无需工作空间的命令?

Gra*_*day 14

tf get没有工作空间就无法运行.原因是服务器需要知道服务器路径和本地路径之间的映射.

如果您正在处理大量文件,那么以下内容不是一个好主意:

  1. 每次创建和删除新工作区
  2. 或者,创建一个新工作区(然后永远不要删除它)

原因是每次执行此操作时Get,服务器都会跟踪哪些文件下载到哪个工作区的文件.如果您从未清理这些工作区,那么存储此信息的表将随着时间的推移而增长.

此外,如果您一直在创建和删除工作区,则服务器必须写入所有这些行,然后在完成后删除它们.这是不必要的.

你真的应该尝试每次重用相同的工作区.如果这样做,服务器非常有效率,只发送自上次下载以来已更改的文件.即使您的构建正在从一个分支移动到另一个分支,您也可以使用tf get /remap,如果分支共享公共文件,则有时效率更高.

虽然它无法解决您的问题,但可以在没有工作空间的情况下列出文件和下载文件.

列出文件:

tf dir $/Product/Main/Project1 /R
Run Code Online (Sandbox Code Playgroud)

要下载文件:

tf view $/Product/Main/Project1/file.cs
Run Code Online (Sandbox Code Playgroud)

使用创意批处理文件,您可以将这两个字符串与FOR命令串在一起.但是我建议首先尝试解决您的工作区问题,因为这是TFS的使用方式.