問題描述
經常有客戶問我:”在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),避免使用新的團隊項目集合。
------------------------------------------------------------
http://www.cnblogs.com/danzhang/ DevOps MVP 張洪君
------------------------------------------------------------