使用TF.exe无法确定工作区

25

我有这个脚本(批处理文件)

tf workspaces /s:http://project02:8080

tf workspace /s:http://project02:8080 Team.descomp;MyDomain\Myuser


tf workfold /workspace:Team.descomp


tf get $/Team/Main/Projects /recursive /force /noprompt

当我尝试执行tf get时,出现了这个错误:无法确定工作区。
控制台输出类似于:
服务器:project02 工作区:DESCOMP 所有者:MyUser 计算机:DESCOMP 工作区:Team.descomp 所有者:MyUser 计算机:DESCOMP ... 工作区:Team.descomp(MyUser) 服务器: http://project02:8080/ $/Team:C:\Temp\Team2 ... 无法确定工作区。
注意,对于 $/Team(团队项目),在两台机器上都有映射:MyUser 和 Descomp 任何建议吗?
3个回答

45

来自MSDN论坛:Hofman先生

http://social.msdn.microsoft.com/Forums/en/tfsbuild/thread/82b13bfd-5fd7-45f7-a681-d84c9ea52765

将tf get的工作文件夹更改为工作区映射的文件夹。

在工作区映射的文件夹中执行该命令。

(例如,如果您在控制台中执行此操作:

cd c:\sources\myteamproject

tf get ...

关键点:将tf get的工作文件夹更改为工作区映射的文件夹。

我在脚本文件中使用命令pushd C:\Temp\Team2

更新:Ryan Cromwell的评论

您可以在脚本中使用以下命令创建和映射工作区。第二个命令有效,因为第一个工作区在“blah”文件夹中创建。第二个命令中的“.”表示将“$/”映射到当前目录(blah)。如果选择,您可以将其更改为具有名称的文件夹或子文件夹。

创建新的工作区
C:\projects\blah>tf workspace /new blah /noprompt /collection:http://<host>:<port>/tfs/<collection> /login:<username>,<pwd>

在该工作区中映射路径
C:\projects\blah>tf workfold /map $/ . /login:<username>,<pwd>


3
您可以使用 tf workspace 命令行映射工作区。 - Ryan Cromwell

7

这里是对@Kiquenet回答的扩展。很遗憾,在评论中无法轻松完成此操作 :(

您可以使用以下脚本创建和映射工作区。第二个命令有效,因为第一个工作区创建在“blah”文件夹中。“.”在第二个命令中表示将“$/”映射到当前目录(即blah)。如果需要,您可以将其更改为命名文件夹或子文件夹。

创建新的工作区
C:\projects\blah>tf workspace /new blah /noprompt /collection:http://<host>:<port>/tfs/<collection> /login:<username>,<pwd>

映射工作区中的路径
C:\projects\blah>tf workfold /map $/ . /login:<username>,<pwd>


1
如果您正在为临时文件夹创建这些内容,最好的做法是在完成后删除它们(通过 tf workspace /delete),以及临时文件夹。 - BrainSlugs83

2

我在TeamCity中执行一个包含以下内容的ps1文件时遇到了问题:

tf resolve FND.sql /auto:KeepYours

tf checkout FND.sql /noprompt

tf checkin FND.sql /noprompt

当我在powershell窗口中执行时,它工作得很好,但是当被Team City执行时,每次tf调用都会得到以下响应:

Unable to determine the workspace. ...

为了获取更多有关正在发生的情况的信息,在第一个tf调用之前,我插入了以下语句:

tf workfold

当我下一次运行Team City时,tf workfold显示了之前未被识别的映射,现有的tf命令开始工作。
即使我删除了tf workflold命令,它仍然可以正常工作。
我不理解这个问题,但也许这对其他遇到同样问题的人有帮助。
我之前尝试了这个和其他网站上的几个建议,但都没有成功。
希望这能帮助到某些人。

某种程度上,tf workfold 能够识别 tf workspace 无法识别的工作区。基本上,您可以使用 tf workfold 映射一个文件夹。此时,tf.exe 可能会挂起。只需终止它,然后运行 tf workspace 即可解决问题。您可能需要尝试 2 或 3 次。 - Dennis T --Reinstate Monica--
示例命令 tf workfold /workspace:"wkspaceEg" /collection:http://tfs.example.com:8080/tfs/collectionEg /login:TFSUsername,TFSPassword /map $/teamProjEg D:\Legacy.00\TFS\Source\Workspaces\teamProjEg。在此命令中,您无法指定工作区所有者的用户名。它将尝试使用 TFSUsername 作为所有者。 - Dennis T --Reinstate Monica--

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