【发布时间】:2015-03-07 00:18:43
【问题描述】:
我目前正在尝试将在工作组中的服务器 (SERVER_A) 上运行的 TFS2010 实例迁移并升级到域上另一台服务器 (SERVER_B) 上的 TFS2013。一切似乎都正常,但是当我打开 Visual Studio 并尝试连接到新的 TFS 实例并检索我的工作区时,它不存在。我已经阅读了很多关于“tf 工作区”和“tfsconfig 身份”的文档,但我仍然很困惑,无法弄清楚发生了什么。我做了什么……
- 从 SERVER_A 导出所有 SQL 数据库和 Reporting Services 加密密钥并还原到 SERVER_B
- 在 SERVER_B 上安装 TFS2013,但不要做任何配置
- 运行
TfsConfig RemapDBs /DatabaseName:SERVER_B\NAMEDINSTANCE;Tfs_Configuration /SQLInstances:SERVER_B\NAMEDINSTANCE - 继续TFS2013配置,选择“升级”选项,顺利通过。有一个关于更新 url 的警告,我这样做了,一切看起来都很好。
此时,如果我在 SERVER_B 上调用 tf workspaces,我会看到所有工作区:
\Microsoft Team Foundation Server 12.0\Tools>tf workspaces /owner:* /collection:"http://SERVER_B:8080/tfs/COLLECTIONNAME/"
Collection: http://SERVER_B:8080/tfs/SFO
Workspace Owner Computer
---------- ------------- ----------
...
DEV-PC1 Administrator DEV-PC1
DEV-PC2 Administrator DEV-PC2
JOHND123 John Doe JOHND123
...
如果我从 SERVER_A 发出同样的调用,我看到的就是这个:
\Microsoft Team Foundation Server 2010\Tools>tf workspaces /owner:* /collection:"http://SERVER_A:8080/tfs/COLLECTIONNAME/"
Collection: http://SERVER_A:8080/tfs/COLLECTIONNAME
Workspace Owner Computer
---------- ---------------------- ----------
...
DEV-PC1 SERVER_A\Administrator DEV-PC1
DEV-PC2 SERVER_A\Administrator DEV-PC2
JOHND123 SERVER_A\John JOHND123
...
因此,SERVER_A 将本地用户作为工作区所有者,迁移中的某些内容将这些本地用户映射到其他一些用户,我只能假设是域用户。在这个例子中(这只是从我所看到的完全混淆)本地管理员被映射到“管理员”。我假设这意味着域管理员。如果我在我的开发机器上打开 Visual Studio,在 Team Explorer 中输入域管理员帐户的凭据(与 SERVER_A\Administrator 不同的密码),我可以连接到新的 TFS2013 实例。但是,当我转到工作区列表时,它会显示我的计算机 (DEV-PC1) 的工作区名称,没有解决方案,如果我单击“管理工作区...”,则列表为空。
似乎这一切都归结为帐户映射问题,但从我所读到的内容中,我并不清楚如何处理这个问题。如果有用,我也可以从两台机器上发布TFSConfig identities 命令的示例输出。我有一种预感,部分问题是大多数工作区的所有者是管理员(所有这些都是在我到达这里之前设置的),并且在 TFS2013 实例中存在域\管理员、SERVER_B\管理员和SERVER_A\管理员。也许 Visual Studio 很困惑?或者 TFS 在升级时可能会感到困惑?
我们将不胜感激任何和所有的帮助。我犹豫地承认我第一次成功地进行了此迁移作为测试运行,找出了我的工作区的所有配置,然后卸载了 SERVER_B 上的所有内容以重新开始(因此我可以截取整个过程的文档) .我第二次尝试它,它没有工作。我真的不认为我忘记写下我第一次执行的任何步骤,但我可能遗漏了什么。
【问题讨论】:
-
您对工作空间有什么不满?在迁移之前,请确保所有内容都已签入。然后迁移。之后,每个人都可以重新映射他们的相关工作区。工作区只是源结构与特定用户的物理文件系统位置之间的映射 - 更改这三个中的任何一个,工作区就会变得无效。使当前工作空间无效并不是什么大问题,也许只是一个小小的不便。任何使用工作空间的构建脚本都应该动态创建临时的。
-
我想我的“挂断”是我是 TFS 的新手,不想在迁移中搞砸任何事情。似乎工作空间应该可以迁移,或者至少应该可以手动重新映射到新用户。如果它们完全是一次性的,那就太好了,但据我了解,搁板存储在工作区中 - 对吗?我知道开发人员有搁置,我不希望他们只是提交或扔掉它们。
-
货架集不存储在工作区中。 Shelvesets 存储在 TFS 服务器上。
-
我刚刚做了一点研究,发现搁置集作为 type=1 的工作区存储在数据库中。虽然这并不清楚如果我不得不扔掉搁板,我可以恢复那个搁板。另外-如果搁置集存储为与创建它的工作区具有相同所有者的工作区,那么我仍然会遇到同样的问题-我需要弄清楚如何将基于工作组的原始用户与新用户关联起来基于域的用户。
标签: visual-studio-2013 tfs tfs-migration