我的语法是否正确?
tf get .\Web\project.root /recursive
All files are up to date.
tf get /version:T .\Web\project.root /recursive
All files are up to date.
使用命令行获取最新信息将报告所有文件都不是最新的!但是,当我在Visual Studio中使用TFS UI获取最新信息时,最新代码确实会下载。
在这个问题得到解决之前,如果没有打开visual studio来获取最新信息,我的超级花哨的msbuild脚本将无法使用!
<Target Name="GetLatestCoreLibraries" Condition="'$(GetLatest)' == 'true'">
<Exec Command='tf get /version:T "$(CoreLibPath)\Source\Libraries /recursive' ContinueOnError="false" />
</Target>
$(CoreLibPath)是传递给脚本的相对路径。有点像...
<PropertyGroup>
<CoreLibraryPath>..\..\Core\Release\xx.xx.xx.xx</CoreLibraryPath>
</PropertyGroup
使用本地文件系统的相对路径是否比使用SCS路径更不可靠?即... $ / Core / Release / xx.xx.xx.xx / Source / Libraries“?
可能是因为我们有时使用Dev Studio UI,有时使用命令行会混淆TFS的命令行版本吗?
答案 0 :(得分:3)
所以,我意识到自己的错误。这很简单。
Command =
'tf get
/version:T
/recursive
"$(CoreLibPath)\Source\Libraries <<<-- Missing closing quote.
'
当您错过 tf get 上的结束双引号时,不会抛出任何错误。它只是报告“所有文件都是最新的。”
c:\Web\Release\x.x\x.x.xxxx>tf get /version:T "..\..\..\..\..\Core\Release\x.x\x.x.xxxx.xxxxx(xxxx xx xx - xxx)\Source\Libraries /recursive
All files are up to date.
问:使用本地文件系统的相对路径是否比使用SCS路径更不可靠? ie ... $ / Core / Release / xx.xx.xx.xx / Source / Libraries“?
答:不,它似乎不那么可靠。
问:可能是因为我们有时使用Dev Studio UI,有时使用命令行会混淆TFS的命令行版本吗?
答:不,这是用户混淆的情况,而不是SCS混淆。
答案 1 :(得分:2)
尝试使用/force
参数。这将强制要检索所有内容,这可能是你不想要的。
或者你可以从CodePlex获得MSBuild Extension Pack - 如果你使用Visual Studio来管理你的构建脚本,他们有MSBuild任务来包装这些调用并使用IntelliSense。
itemspec
对我来说很奇怪,但我没有任何具体的更正。我在使用命令行调用时明确调出工作区,例如tf get "$/<our product>/<branch>[/<project>]" /force /recursive
。否则,路径相对于当前活动工作空间映射。
答案 2 :(得分:0)
另一个选择是用户无权访问项目集合。在我的情况下,我可以以某种方式看到目录,但没有权限下拉代码。我必须有一个TFS管理员添加我作为“开发人员”访问。