将团队项目迁移到另外一个团队项目集合中 - Azure DevOps Server (TFS)

问题描述

经常有客户问我:”在Azure DevOps Server中,如何将一个团队项目迁移到另外一个团队项目集合中?”

简单的答案是:“目前版本不支持!”。

这是目前全球用户关注度最高一条需求(https://developercommunity.visualstudio.com/idea/365365/make-it-possible-to-move-a-team-project-between-te-1.html),但是非常遗憾,微软产品组目前也解决不了这个问题。

问题分析

实际上,鉴于Azure DevOps Server (之前叫TFS)的设计,短时间内通过系统升级无法实现这样的功能。不能实现这个功能的原因有许多,但是其中最核心的一个是数据唯一性标志ID。

在TFS系统,所有的工作项都具有一个唯一的ID值,这个ID值是一个自动增量加1的序列号,例如新增一条需求的ID为1001,之后新建一个Bug的工作项ID就是1002。在同一个团队项目集合中,这个工作项ID的序列号是共享的,也就是说在第一个团队项目中新增了一个工作项,在第二个团队项目中新增的工作项ID也会自动加1。在不同的团队项目中,有可能都存在1001这样的工作项。如果我们在团队项目集合之间迁移团队项目,那么工作项数据将变得非常混乱。

另外,由于传统的TFVC库也存在同样的问题,在同一个团队项目集合中,路径都是以美元符号$开头的,文件的路径格式为”$/团队项目名称/文件或文件夹路径“,如果我们在团队项目集合之间迁移团队项目,同样会让系统中的数据变得混乱不堪。

再加上报表数据库tfs_warehouse中的数据结构的复杂性,使得这种迁移功能变得非常复杂,涉及数据的变更太多,几乎是一个无法完成的工作。

所以,大家以后不要在问如何迁移团队项目的问题了。

解决方案

从上面的分析,我们可以看到这是一个无解的问题。

但是,我们可以避免出现这样问题。为了避免在使用Azure DevOps Server的过程中出现需要迁移团队项目的问题,需要在使用之初对企业中的研发数据做好规划,按照一定的标准创建团队项目。例如,同一个产品线的信息系统存放到相同的团队项目集合中,相同研发团队的信息系统存放到同一个团队项目集合中;如果考虑到不会出现成千上万的团队项目,尽量使用默认的团队项目集合(DefaultCollection),避免使用新的团队项目集合。


image

------------------------------------------------------------

http://www.cnblogs.com/danzhang/  DevOps MVP 张洪君

------------------------------------------------------------

posted on 2020-03-30 00:51  danzhang  阅读(979)  评论(0编辑  收藏  举报

导航