有几件事要检查...但在您进行任何 TFS/项目结构修改之前,我建议检查所有当前更改(适用于所有团队),进行最新以检索所有这些更改,并进行整个本地工作区文件夹的备份。
我需要澄清一点才能完全回答你......正在分支哪些子文件夹? IE。您通常会将MSB/Main 分支到TeamProjectA/Main,还是将单个项目分支,例如MSB/Main/Enterprise/Project1、Project2等?
首先:检查您的工作区映射...在 Visual Studio 中,打开源代码管理资源管理器。窗口顶部有一个工作区下拉菜单...选择“管理工作区...”并编辑您的主工作区。
理想情况下,只有一个工作文件夹,将 TFS 项目的根(在您的情况下为“$”)映射到根本地工作文件夹。如果您有多个工作文件夹,请确保第二个不是根目录的子文件夹。 IE。 $/TeamProjectA/Main/Enterprise/Project1 不应该有单独的文件夹。如果这样做,请将其删除并从根目录执行获取最新信息。
这是我的第一个猜测,因为如果 TeamProjectB/Project1 映射到 TeamProjectA 文件夹,那么无论您更改多少次引用,您始终会加载 Team B 的项目。
第二次:你只做一次分支。之后的一切都在合并,你只能在直系父母和孩子之间合并(除非你跳过箍手动搞乱合并......在 9 个国家/地区的可射击进攻)。
这意味着只要 Project1 是从 TeamProjectB 分支出来的,您将始终与 TeamProjectB 绑定...您可以在 TFS 中为每个团队和项目修复引用,但是当您将TeamProjectA 合并回MSB,Project1 不会与其他所有内容合并到MSB。
我不清楚会发生什么...要么该项目不与任何东西合并,要么合并回TeamProjectB 的文件夹。我非常怀疑后者是这种情况,但前者也没有多大意义……我几乎希望 TFS 以某种方式短路。
我猜(完整的 WAG)因为您能够将 Project1 从 TPB 分支到 TPA,所以您没有分支 /Main 或 /Main/Enterprise... 我希望答案是TFS 不允许您分支到另一个分支的子文件夹。
解决此问题
将Project1 合并回TPB。入住。
将TPB/Project1 合并回MSB。入住。
选择TPA/Project1。转到File -> Source Control -> Branching and Merging -> Reparent。选择 MSB's Project 1 作为新的父级。如果您的分支是从/Main 或/Main/Enterprise 完成的,那么无论分支根是什么,您都必须重新设置。
(请注意,如果 TPB/Project1 不是源自 MSB,这将不是一个选项...转到计划“B”)
不确定您是否可以/是否需要检查这些更改...在 TPA 和 MSB 上进行检查以确保安全
Plan 'B':如果这不起作用,您将不得不删除 TPA/Project1 并从 MSB 重新分支。在执行此操作之前,请确保将所有内容完全合并回MSB(并签入)。
TFS 可能抱怨重新分支到预先存在的目录(因为它保留了 TPA/Project1 的删除历史记录)...我不认为它会,但如果它确实,您将不得不使用命令行工具永久删除TPA/Project1。命令是tf destroy...确保从本地TPA/Project1 文件夹运行它,否则tf 可能无法解析tfs 服务器/路径。
HTH!
詹姆斯