目前,我们的TFS(TFVC, not git)项目包含一个文件夹,该文件夹托管了我们整个产品。此文件夹包含三个分支(Dev,Main和Release),每个分支依次包含许多个不同的子项目。我们正在尝试进行重组,以使不同的组件包含在它们自己的分支结构中。
问题:是否可以将包含在分支下的文件夹(而不是分支本身)以及其他分支中的相应文件夹移动到 new TFS项目中,同时保持关系未合并变更集的状态和状态?
以下是我们期望的最终结果的图表:
我们希望将每个“ Project 1”文件夹( )(左侧)移动到各自的分支结构(右侧)中,但是我们需要任何未合并的变更集才能“一起使用”。这就是说,如果我们尝试在新结构中从Dev合并到Main,我们将看到未在旧结构中合并的(相关)变更集的列表。
这可能吗?如果是这样,我们需要什么系列的tf
/ tfvc命令?我已经深入Google了,但是很短-要么因为我不知道如何用搜索友好的方式来描述它,要么根本就不可能。
我尝试过的事情:
将每个文件夹直接移动/重命名到新项目中(每个目标Dev / Main / Release分支分别预先创建)
将每个文件夹分支到新结构中(这次没有预先创建目标分支文件夹)
tf merge /baseless /recursive
)并在冲突时获取目标分支文件来解决该问题;然后重新建立分支的父级。 (如here所述)如果这是解决此问题的唯一方法,那么我们愿意失去全部历史记录。最好我们保留它,即使它意味着将原始文件的“已弃用”副本存储在某个地方。我也不担心货架集“遵循”它们的来源……我们只有两个会受到影响,我们可以根据需要手动处理它们。我们正在使用本地TFS 2018。
编辑:响应已发布然后删除的答案:
我不是要移动分支,而是要在其内部提取文件夹到它们自己的相应分支结构中,而不会丢失即将发生的更改。我只在上面显示了两个级别,但实际上它们要深得多。我可以tf rename
在沙箱中整个分支并获得预期的结果...但是重命名分支不是我要尝试的操作,移动文件夹会产生意外的结果。
答案 0 :(得分:1)
通过在新的Dev,Main,Release分支和中都具有合并关系,您似乎可以实现所需的目标。我认为您可以对上面尝试的第二条“路线”进行修改。
目标是创建新的分支合并关系(通过将[new] Release分支到[New] Main,然后将[New] Main分支到[New] Dev。此时,已经建立了合并关系,并且所有分支都是对于Main和Dev,我们将[旧]与[new]进行无基础的合并。对于Main,我们希望在Main和Release相同(旧)的状态下对基于基础的合并进行点缀。我们想在Dev和Main相同的状态下(在旧状态下)进行无基础的合并,然后可能会发生其他合并(从[旧]到[新]),并且应该将这些合并检测为从[新]的可合并更改。到[新]类似于它们在[旧]到[旧]
您将松散搁置集(但始终可以在旧位置搁置,签入并合并到新位置),但只要不破坏旧项目,就应保留历史记录。