如何 Migration 現有的 TFS 2012 至另一台 TFS2013

為什麼會有這個議題呢?的確,大部分所看見的可能都是升級,比如將TFS2012升級到TFS2013,不過今天客戶有一個特殊需求,因為現有的 TFS2012、TFS2013 都在運作中,TFS2012 要移交給 A 部門,原本 B 部門在 TFS2012 上的 Team 專案希望移轉到新的,另一台 TFS2013 的伺服器

緣起

為什麼會有這個議題呢?的確,大部分所看見的可能都是升級,比如將TFS2012升級到TFS2013,不過今天客戶有一個特殊需求,因為現有的 TFS2012、TFS2013 都在運作中,TFS2012 要移交給 A 部門,原本 B 部門在 TFS2012 上的 Team 專案希望移轉到新的,另一台 TFS2013 的伺服器。

尋找解決方案

在尋找解決方案的時候,讀了許多官方的資料,關於如何備份 TFS 資料庫,如何還元等等,但由於 TFS2013 的報表與小組網站變成以 ShartPoint 2013,而 TFS2012 是以 SharePoint 2010 為基底,若使用手動方式 Migration,必須自行 Backup 所有 TFS資料庫 (Tfs_Confuguration, Tfs_DefaultCollection, ReportServer&InstanceName) ,手動安裝舊版 TFS ,設定 SharePoint 網站、並使用 TFS2013 的 Upgrade Wizard 進行升級,而達到一轉的目的。過程繁雜,且不容易一次就成功。

所幸 CodePlex 上有一套工具 TFS Integration Platform,這套工具可以解決我們現在的這個問題,首先到下面網址:

http://tfsintegration.codeplex.com/

image

首頁中,有許多針對 TFS Integration Platform 這套工具的說明,說明工具的出處、工具的主要功能、Guildance 位置、工具的限制 等等。在 Scope 的地方,可以發現,它可以針對 VersionControl 與 Work Item Tracking 這兩項做移轉。

image

 

開始進行

將 TFS Integration Platform 下載下來之後,直接安裝即可,安裝完成後在您的資料夾

C:\Program Files (x86)\Microsoft Team Foundation Server Integration Tools\Documentation\Readiness Package\

有完整的說明文件檔可以參考,說明主要主題如下:

image

接著開始我們的移轉作業。

 

步驟如下:

一、確認 WorkSpaceRoot 的資料夾有沒有建立起來

在安裝資料夾下面的 Guidance 下,有一個完整說明檔 TFS_Integration_Platform-Getting_Started_UI.mht ,其中提到必須先開啟安裝目錄下的 "MigrationToolServers.config" 檔案,確認 TfsIPData 資料夾的位置、此目錄是否已經建立起來,且須要注意路徑不可過長,不可超過 259 個字元。

image

image

 

二、開啟 TFS Integration Platform,並建立一個新的 (移轉/Configuration)

接著可以開啟 TFS Integration Platform ,並建立一個新的 Migration,前一版稱做 (Create New Configuration)。點選後,它要求載入一個Configuration Template,直接使用 TFS Integration Platform 在 『C:\Program Files (x86)\Microsoft Team Foundation Server Integration Tools\Configurations\Team Foundation Server』 路徑所提供的 『VersionControlAndWorkItemTracking.xml』範本即可,因為我們的需求是 Version Control & Work Item Tracking 同時移轉。

選取Template畫面:

image

畫面呈現如下:

image

畫面使用 Left Source 與 Right Source 來表示,且分別是需要 Configure 的,點選 Configure 後會有 VersionControl Provider 的版本供您選擇,選擇後接著跳出與 Visual Studio 連結 Team 專案相同的畫面,如下:

image

這很明顯的表示,這個工具在進行移轉時也是需要 Team Explorer Client 與 MSSCCI Provider 的支援,因為它其實也是透過該 API 來進行資料的複製 & 建立,所以移轉的目標的 TFS2013 須先架好,並使用此工具做單向的移轉即可。當然他也支援雙向、甚至同步的 Version Control & Work Item Tracking 的更新,但這不是我們今天的需求。

 


註:

由於 TFS Integration Platform 並不會自動幫你建立 Team 專案,所以目標的 TFS2013 必須自行預先建立好要被移轉的目的 Team 專案。由於Team 專案也有許多類型,如:Scrum、MSF for Agile 等等,請建立與來源相同類型的 Team 專案,以免移轉失敗。


三、設定 Version Control 與 Work Item Tracking 的 Left Source (來源),Right Source (目的)

在設定好Version Control 與 Work Item Tracking 的 Left Source 來源,Right Source 目的之後,請將 Workflow Type 改為 Custom,這時 Frequency & Direction & Sync Context 才可以選擇。

請將 Frequency 設為 ContinuousManual,Direction 設為 Unidirectional (單向),Sync Context 在 Direction 設 Unidirectional 的時候,設為 Unidirectional 或 Disabled 都可。

完成設定後,如下圖:

image

 

四、開始執行

再開始執行之前,您必須做 Save to Database 的動作,Start 的頁簽才會 On 起來。當然您也可以先透過 Export Config 來儲存您現在的所有設定,它的設定其實也是一個 XML 檔案,只是它會儲存成 ZIP 檔案。

下圖、Save to Database 按鈕:

image

這時切換到 Start 頁籤,其實當切換到 Start 頁簽時,這時就已經開始作業了。畫面會秀出共兩項要執行的工作內容,如下:

image

 

五、查看 Process Progress

image

六、處裡 Conflicts

什麼是 Conflicts 呢?主要是因為 Work Item Tracking 在移轉時比較容易因為環境的不同而移轉不過去,Migration 完成後畫面會秀出所有需要 Resolve 的 Conflicts 項目,如下:
image

比如最典型的問題就是Domain Account 在目標環境沒有,因為 Team Foundation Server 指派工作項目時預設是使用 AD 帳戶的關係。比如在此 Case 中,就有兩個 Conflicts 與帳號有關,可點選 View Runtime Conflicts 按鈕,會切換到如下畫面:

image

解決方式其實也很簡單,如果是帳號問題,就是對症下藥,將該目標機器加入相同的 Domain ,或是建立該 AD Account,當所有問題都解決時,點選下方的 Resolve 按鈕進行修復,如下:

image

修復完成後須再按 Start 再跑一次,這時候 Conflicts 可能會從 7 個減少為 2 個,然後就這樣反覆的進行,直到所有 Conflicts 都完全修復為止。

但它有個很大的缺點,就是不是所有問題都能成功修復,因為有可能 TFS 版次不同,Database 欄位不同而無法移轉過去,常見的如 unmapping work item Type conflict type,您也可以試著自訂 Rule 的方式修復,都可以 Add new rule 的畫面的 Conflicts Type 的下拉選單選擇要處裡的 Conflicts。

image

這時您也可以決定 Resolution Action 的決定修復方式,Retry、或甚至是暫時忽略 (真的不行... 只好....)。

image

 

結語

在進行 TFS 的 Migration 時,這一套公不失為一個方便的解決方案,但這個工具並不是百分之百可以將所有的 Work Item 都 Migration 到新的機器,筆者實測的結果,許多 Work Item 是轉不過去的,就算你是一筆 ID 的去對,去新增 rule 修改,但都還是要實際使用 Visual Studio 查看工作項目是否有無問題,是否有 Mapping 到原本的 Source Code 等等。希望未來還有其他 Solution 可以解決此問題。


 

簽名:

學習是一趟奇妙的旅程

這當中,有辛苦、有心酸、也有成果。有時也會有瓶頸。要能夠繼續勇往直前就必須保有一顆最熱誠的心。

軟體開發之路(FB 社團)https://www.facebook.com/groups/361804473860062/

Gelis 程式設計訓練營(粉絲團)https://www.facebook.com/gelis.dev.learning/


 

如果文章對您有用,幫我點一下讚,或是點一下『我要推薦,這會讓我更有動力的為各位讀者撰寫下一篇文章。

非常謝謝各位的支持與愛護,小弟在此位各位說聲謝謝!!! ^_^