有几件事要检查...但在您进行任何 TFS/项目结构修改之前,我建议检查所有当前更改(针对所有团队),进行最新以检索所有这些更改,并备份您的整个本地工作区文件夹。
我需要澄清一点才能完全回答你......正在分支哪些子文件夹?IE 您通常会分支MSB/Main
到IE 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
's 文件夹。我非常怀疑后者是这种情况,但前者也没有多大意义……我几乎希望 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
or完成的/Main/Enterprise
,那么您将不得不从分支根目录中重新创建。
(请注意,如果TPB/Project1
不是源自MSB
,这将不是一个选项...转到计划“B”)
不确定您是否可以/是否需要检查这些更改...在 TPA 和 MSB 上进行检查以确保安全
计划“B”:如果这不起作用,您将不得不删除TPA/Project1
并重新从MSB
. 在执行此操作之前,请确保所有内容都完全合并回MSB
(并签入)。
TFS可能会抱怨重新分支到预先存在的目录(因为它保留了 的删除历史记录TPA/Project1
)...我认为不会,但如果确实如此,您将不得不使用命令行工具永久删除TPA/Project1
. 命令是tf destroy
...确保从本地TPA/Project1
文件夹运行它,否则 tf 可能无法解析 tfs 服务器/路径。
!
詹姆士