如何利用VSSConvert 工具將 VSS 2005 移轉至 TFS 2010

如何利用VSSConvert 工具將 VSS 2005 移轉至 TFS 2010

移轉工具本身是還蠻單純的

備份、分析、設定對應關係、移轉

四個步驟就可以將移轉的動作完成

 

這個工具只有支援 VSS 2005 的版本,也就是說 VSS 6 要用的話!需要自行升至 VSS 2005

 

另外,最花時間的絕對不是移轉的動作,反而是確認所有相關的 source code 是否都是正確的

是否有垃圾檔案在裡面?還是說結構是否正確等等…

 

至於怎麼評估移轉的方法和對應關係,這會跟每個團隊目前的做法有相當的影響。

 

那麼是誰要用這些 Tool 來轉呢?

這裡比較推薦,平常 VSS 都有人在定期維護且保持乾淨

而且,目錄結構在移轉後也不會太大的出入、專案數量多且有貼 Label 的話。

 

是可以考慮用 VSSConvert

 

當然在做任何一切事情之前,一定要先備份!

忘記在那裡??可以開啟 VSS Explorer 的 File –> Open SourceSafe Database 中就可以看到了

image

 

image 
把整個目錄備份起來就可以了!

 

接下來我們就可以開始分析 VSS 資料庫是否有任何的損壞?

 

"C:\Program Files (x86)\Microsoft Visual SourceSafe\analyze.exe" -f -v4 c:\vssdb\data

參數 f 代表要做自動修復錯誤, v4 則是代表顯示較完整的訊息

 

image

分析的資料會儲存在 c:\VSSDB\Data\Backup\   

若是有任何的錯誤都要排除

 

下載 HotFix 並安裝,若是沒有的話則會出現下列的錯誤

http://code.msdn.microsoft.com/KB950185/Release/ProjectReleases.aspx?ReleaseId=1123

VS80-KB947647-X86-INTL.exe

image

 

 

接下來就可以決定要將那些的目錄移轉到 TFS 2010 上面。

 

image

接下來就要進行目錄的分析,以確定在移轉的過程中是否有問題

 

請 Copy 以下的 XML 並建立對應檔

<?xml version="1.0" encoding="utf-8"?>
<SourceControlConverter>
      <ConverterSpecificSetting>
            <Source name="VSS">
                  <VSSDatabase name="c:\VSSDB"></VSSDatabase>
            </Source>
            <ProjectMap>
                <Project Source="$/ATM"></Project>
            </ProjectMap>
      </ConverterSpecificSetting>
      <Settings>
           <Output file="Analysis.xml"></Output>
     </Settings>
</SourceControlConverter>

 

建立至 C:\VSS2TFS\Setup.xml  並存檔

在同一個目錄中執行以下指令

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\VSSConverter.exe" analyze Setup.xml

 

image
輸入密碼後就會掃描相關的檔案

 

 

image 
結束後在目錄中就會建立相關的檔案,若是在自已的環境中是改成有 AD 的話,請修改 UserMap

 

 

image
分析結果的檔案

 

沒有太大問題接下來就開始「正式移轉」啦!

首先,請先認確 TFS 的 Team Project 是否存在

image

 

把 setup.xml 加上紅色的區段後,另存成 setupmigration.xml

請先用 Copy 的方式,避免不小心打錯或是 大小寫弄錯。造成悲劇

 

<?xml version="1.0" encoding="utf-8"?>
<SourceControlConverter>
      <ConverterSpecificSetting>
            <Source name="VSS">
                  <VSSDatabase name="c:\VSSDB"></VSSDatabase>
            </Source>
            <ProjectMap>
                <Project Source="$/ATM" Destination="$/ATM"></Project>
            </ProjectMap>
      </ConverterSpecificSetting>
      <Settings>
           <TeamFoundationServer name="VSS2TFS" port="8080" protocol="http" collection="tfs/DefaultCollection"></TeamFoundationServer>
           <Output file="Analysis.xml"></Output>
     </Settings>
</SourceControlConverter>

 

Tip:記得在執行前要把 Analysis.xml 的檔案改名 或 刪除

 

正式移轉請執行下面的指令

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\VSSConverter.exe" migrate setupmigration.xml

image

 

image

這個的資訊在「工具移轉」的時候一定會遇到的,因為該 sln 的 版控還是指向原來的 VSS

可以參考 MSDN 的 繫結和解除繫結專案及方案 http://msdn.microsoft.com/zh-tw/library/ms181375.aspx

 

image
開啟 TFS Explorer 後可以看到 ATM 多了目錄,查一下歷史記錄後也會出現 之前 VSS 的記錄內容

 

image
連同 Label 也是會一併轉進來的。同時也會把目前最新的版本貼上 Label

 

這樣子就完成 1 個專案的移轉動作

 

ps.. 若是 VSS 6 升上 VSS 2005 的話!所有的異動都會是一個 Change set ,而且也不會有 Label 。