我有这个脚本(bat文件)
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)
$ / Team:C:\ Temp \ Team2
...
无法确定工作区。
注意,$ / Team(团队项目)在两台机器上有地图:MyUser和Descomp
工作区:团队所有者:MyUser 电脑:MyUser
工作区:Team.descomp所有者: 我的用户计算机:DESCOMP
有什么建议吗?
答案 0 :(得分:38)
来自论坛MSDN:霍夫曼先生
http://social.msdn.microsoft.com/Forums/en/tfsbuild/thread/82b13bfd-5fd7-45f7-a681-d84c9ea52765
将tf的工作文件夹更改为工作区映射的文件夹。
从映射工作空间的文件夹中执行命令
(例如,如果您从控制台执行此操作:
cd c:\sources\myteamproject
tf get ...
)
键:将tf的工作文件夹更改为工作区映射的文件夹。
我在我的脚本文件中使用命令 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>
答案 1 :(得分: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>
答案 2 :(得分:2)
我在团队城市执行ps1文件时遇到以下问题:
tf resolve FND.sql /auto:KeepYours
tf checkout FND.sql /noprompt
tf checkin FND.sql /noprompt
当我在PS窗口中执行它时,它工作正常,但在Team City执行时,我得到了每个tf调用的以下响应:
Unable to determine the workspace. ...
尝试获取有关正在发生的事情的更多信息,我在第一次调用tf之前插入了以下语句:
tf workfold
当我下次运行Team City时,tf workfold显示以前未识别的映射,并且现有的tf命令开始工作。
当我拿出tf workflold命令时,它仍然有效。
我不明白,但也许这对其他有此问题的人有用。
我之前曾尝试过来自此网站和其他网站的一些建议,但没有成功。
希望这有助于某人。