我必须将在一个分支中创建的搁置集说“开发”迁移到另一个说“发布”。这样我就可以直接合并搁置集,然后发布为开发分支创建的版本。
我使用的命令是:
tfpt unshelve "shelveset name" /migrate /source:"$...development" /target:"$...Release"
它显示此错误:
无法确定工作区
您启动命令的位置必须在您的工作空间内。例如c:\workspaces\project\development
,如果那是您的来源所在的位置。
我想您的问题是:如何在不发生此错误的情况下完成工作?. 在这种情况下,请确保两个分支都映射到您的本地系统,并且您的源代码的最新版本执行了 get-latest-version。
这应该可以防止错误发生,因为这些路径都包含有关用于映射的工作空间的信息。
我今天遇到了同样的问题。检查以下项目后,我得到了它的工作:
我不得不卸载 v. 2010,所以只剩下 v. 2012。版本号似乎没有引用您的 TFS 版本。
要检查您是否在正确的文件夹中,您可以运行 tf workspace.
在弹出的窗口中,找到您要定位的工作空间并检查列本地文件夹。确保您在该文件夹中。
我花了很多时间来完成这件事,我几乎没有要克服的问题,其中一个实际上是
无法确定工作区
通过从源分支根文件夹运行命令解决了这个特定问题。这与这里的一些答案相反,一般来说,他们说使用“目标”分支 - 不,使用“源”:
cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"
在此之后出现了第二个问题。似乎它无法连接到 TFS 服务器。我意识到,我安装了多个 VS 并连接到不同的 TFS 服务器。我使用的是 VS12,我有工作区和服务器连接。但是我没有意识到需要在 VS13 中复制相同的连接才能使 TFPT2013 正常工作。它连接到相同的服务器和工作区。
我也尝试过使用 TFPT2015,但我安装了它,但它没有安装 TFPT.exe,因此它没用。所以我尝试了从 TFPT2013 到 TFS2015,它适用于这个特定的命令。我想知道,如果 VS12/13 对 TFS2015 工作正常,为什么不呢?
总结
我的第一个答案解释了如何使用TFPT
. 在这个答案中,我想解释如何在没有 TFPT 的情况下做到这一点。
每个开发人员都应该有多个工作区。因为我们同时处理多个问题,我们不想混淆。所以,你在一个问题上工作WS1
,另一个问题在WS2
. 因此,如果您在不同的工作空间中搁置您的搁置集,这也将这样做。因为您的搁置集不能指向同一工作区中的 2 个不同位置。但在不同的工作空间中,它将搁置到该工作空间中映射的位置。
我遇到了和鲍里斯·卡伦斯一样的问题。我已经为 VS2012 和 VS2013 安装了 TF Power Tools。在命令提示符中运行 tfpt.exe 命令时,我总是收到错误消息“无法确定工作区”。这是因为我在 TFS 2013 中使用了 VS 2012 电动工具。所以我必须在系统环境变量“ TFSPowerToolDir ”中更改电动工具的路径以指向 VS2013 的电动工具。
可以找到运行的版本号:tfpt.exe /? TF 电动工具版