共用方式為


從 Visual SourceSafe 移轉

您可以使用 Team Foundation VSSConverter 命令列工具,將 Visual SourceSafe 資料庫中的專案、檔案、版本歷程記錄、標籤和使用者資訊移轉到 Team Foundation 版本控制的伺服器。 這個工具隨附在 Visual Studio Team Foundation Server 中。

如需 Visual SourceSafe 的詳細資訊,請參閱 Microsoft 網站上的下列網頁:Visual SourceSafe (英文)。

若要從 Visual SourceSafe 資料庫移轉資料

  1. **了解重要概念:**在您將 Visual SourceSafe 資料庫中的資料移轉到 Team Foundation 版本控制的伺服器之前,您應該先了解一些重要概念。 Team Foundation 和 Visual SourceSafe 有顯著的功能差異。 因此,VSSConverter 在移轉某些種類的資料時,必須加以修改。

    如需詳細資訊,請參閱本主題稍後的 VSSConverter 如何轉換您的資料。

  2. **確定您已經具備必要的權限:**若要執行本主題的程序,您必須擁有幾種類型的權限。 如需詳細資訊,請參閱本主題稍後的必要的權限。

  3. **規劃及準備移轉程序:**在您開始移轉程序之前,您可以採取規劃及準備步驟,讓您自己和您的團隊避開嚴重的問題。 如需詳細資訊,請參閱本主題稍後的規劃及準備移轉程序。

  4. **分析您的資料:**在您將 Visual SourceSafe 中的資料移轉到 Team Foundation 版本控制之前,您必須先使用 Visual SourceSafe 轉換器的「分析」功能來判斷資料中是否有任何問題將會影響移轉的結果。 這個程序也會產生移轉資料所需的使用者對應檔。 如需詳細資訊,請參閱本主題稍後的分析您的資料。

  5. **移轉您的資料:**當您執行「分析」功能之後,幾乎就可以開始準備移轉資料。 若要移轉資料,您必須指定如何移轉使用者名稱、建立移轉設定檔案,然後執行移轉命令。 如需詳細資訊,請參閱本主題稍後的移轉您的資料。

  6. **確認移轉及解決問題:**在完成移轉功能之後,您應該執行下列步驟:

    • 檢閱移轉功能所產生的報告。

    • 檢查 Team Foundation 版本控制伺服器上的資料,以確定 Visual SourceSafe 資料庫中的資料已正確移轉。

    當您採取這些步驟之後,您可能必須排除問題。 如需詳細資訊,請參閱本主題稍後的確認移轉及解決問題。

必要的使用權限

若要執行本主題的程序,您必須具有下列權限:

  • 在包含您想要移轉之資料的 Visual SourceSafe 資料庫中,您必須知道 Admin 帳戶的密碼。

  • 在安裝 Visual Studio 的移轉電腦上,您必須是 [Administrators] 群組的成員。

  • 在 VSSConverter 使用的資料庫上,您必須擁有「建立資料庫」權限。 如需詳細資訊,請參閱本主題稍後的提供資料庫給 VSSConverter 使用。

  • 在 Team Foundation 的應用程式層上,您必須是 [Team Foundation Administrators] 安全性群組的成員。 如需詳細資訊,請參閱 Team Foundation Server 使用權限

規劃及準備移轉程序

在您開始移轉程序之前,您可以採取規劃及準備步驟,讓您自己和您的團隊避開嚴重的問題。

考量減少所需時間的選項

轉換器會提供移轉選項,這些選項可藉由縮短移轉時間或是讓小組在移轉期間能夠使用版本控制,將移轉的時間縮至最短。 請評估下列哪些移轉選項最適合您的團隊使用:

  • **移轉選取的專案:**您可以在不同時間移轉選取的專案,而不用同時移轉整個 Visual SourceSafe 資料庫。 如需詳細資訊,請參閱本主題稍後的 <ProjectMap> 區段。

  • **截斷部分歷程資料:**使用 Visual SourceSafe 的封存功能移轉部分記錄。 如果您對於移轉舊的記錄不感興趣,請使用這個選項。 您可以使用這項功能,移除特定日期之前的檔案和資料夾的版本歷程記錄。 如需詳細資訊,請參閱本主題稍後的截斷項目的記錄。

與您的團隊一起排程移轉

請嘗試排程在使用者不需要存取您要移轉的 Visual SourceSafe 資料庫時進行移轉。 如果您有許多資料、大型團隊或者您已經處理專案一段很長的時間,您可能會想要安排大量的時間來準備及移轉資料。

重要事項重要事項

請通知團隊成員何時將進行移轉程序,並建議他們先簽入所有檔案,然後再開始移轉程序。

複製及準備您的 Visual SourceSafe 資料庫

依照下列步驟複製及準備您的 Visual SourceSafe 資料庫:

  1. **簽入檔案:**在理想狀況下,Visual SourceSafe 資料庫中的所有檔案應該都要簽入。 請至少嘗試簽入多一點的檔案。

  2. **移除對 Visual SourceSafe 專案的存取:**請確定您是唯一可存取您要移轉之 Visual SourceSafe 專案的人。

  3. **複製資料庫:**遵循 Microsoft 網站的以下網頁所提供的指示進行:如何備份 Visual SourceSafe 資料庫 (機器譯文)。

  4. **升級您的資料庫複本:**如果您的 Visual SourceSafe 資料庫是 Visual SourceSafe 6.0 之前的版本,請使用 Visual SourceSafe DDUPD 公用程式將其升級為 Visual SourceSafe 2005。 如需詳細資訊,請參閱 Microsoft 網站的下列主題:DDUPD 公用程式 (英文)。

  5. **(選擇性) 截斷項目的記錄:**如需詳細資訊,請參閱本主題稍後的截斷項目的記錄。

  6. **掃描及修正資料庫複本中的資料完整性問題:**使用 Visual SourceSafe ANALYZE 公用程式,找出並修正資料庫中的資料完整性問題。 如需如何使用此工具的詳細資訊,請參閱 Microsoft 網站的下列網頁:ANALYZE 公用程式 (英文) 和如何在 Visual SourceSafe 中偵測及修正資料庫損毀錯誤 (機器譯文)。

截斷項目的記錄

如果您不想要移轉儲存在 Visual SourceSafe 中的所有記錄,您可以使用 Visual SourceSafe 的封存功能,只移轉特定日期之後的記錄。

警告

使用這個方法會從 Visual SourceSafe 資料庫中永久移除版本歷程記錄。因此,請務必在 Visual SourceSafe 資料庫複本上執行這個程序,而不要在使用中的資料庫上執行。

若要在 Visual SourceSafe 中截斷項目的記錄,請使用 Visual SourceSafe 中的封存功能。 您可以指定時間戳記,也就是您想要使用下列任何一個值來截斷此時間戳記之前的記錄:

  • 標籤

  • 資料夾的版本

  • 日期

如需如何在 Visual SourceSafe 中封存的詳細資訊,請參閱 Visual SourceSafe 封存資料庫

注意事項注意事項

Visual SourceSafe 封存功能對封存檔的大小限制為 2 GB。 如果此程序期間發生錯誤,請嘗試個別封存較小的專案。

準備移轉機器

依照下列步驟來準備移轉機器:

  1. 請確定此機器有足夠的可用磁碟空間可完成移轉程序。 若要預估所需的磁碟空間量,請將下列項目加總:

    • 5 GB 的磁碟空間供 VSSConverter 用來建立暫存檔及產生記錄檔。

    • 磁碟空間,等於您將移轉之 Visual SourceSafe 資料庫中專案大小的兩倍。

    • 足夠安裝以下步驟所描述之應用程式的磁碟空間。

  2. 在移轉機器上安裝 Visual Studio。 

    重要事項重要事項

    VSSConverter 需要資料庫 (SQL Server Express 或 SQL Server) 才能運作。 根據預設,當您安裝 Visual Studio 時,也會安裝 SQL Server Express,而且系統會授與您 VSSConverter 運作所需的權限。 如需詳細資訊,請參閱本主題稍後的提供資料庫給 VSSConverter 使用。

  3. 在移轉機器上安裝 Visual SourceSafe 2005。

  4. 安裝與 Microsoft 知識庫文件 950185 相關的更新。 您可以從 Microsoft 網站的下列網頁取得這個軟體:KB950185 - VSS Required QFE for Orcas SP1 VSSConverter

  5. 請確定您已經遵照複製及準備您的 Visual SourceSafe 資料庫中的步驟進行。

  6. 將 Visual SourceSafe 資料庫複製到移轉機器上的資料夾。

    警告

    如果您使用檔案共用讓移轉機器存取 Visual SourceSafe 資料庫中的資料,而不是複製資料庫,您必須提供用來登入移轉機器之帳戶的「讀取」和「修改」存取權。我們不建議您採用這個方法,因為這樣可能會延長移轉程序。

    重要事項重要事項

    不論您如何設定移轉機器來存取 Visual SourceSafe 資料庫,請務必在資料庫複本上執行移轉程序,而不要在使用中的資料庫上執行。 這種方法可幫助您保護資料。

提供資料庫給 VSSConverter 使用

VSSConverter 需要資料庫 (SQL Server Express 或 SQL Server) 才能運作。 根據預設,當您安裝 Visual Studio 時,也會安裝 SQL Server Express。 如果當您安裝 Visual Studio 時決定清除這個選項,您之後必須手動安裝 SQL Server Express 或是使用 SQL Server 當做資料庫。

不論您使用哪一個資料庫,您都必須擁有資料庫的「建立資料庫」權限。 如果是 SQL Server Express,當您與 Visual Studio 一起安裝它時,系統會自動授與您這個權限。

如果您想要使用 SQL Server 而不是 SQL Server Express,您必須修改設定檔。 如需詳細資訊,請參閱本主題稍後的 <SQL> 元素。

準備您的 Team Foundation Server 執行個體

依照下列步驟來準備移轉機器:

  1. 請確定 Team Foundation 的資料層有足夠的可用儲存空間。 您需要的資料大小可能是您將移轉之 Visual SourceSafe 資料庫中專案的資料大小的兩倍。

    這個需求可能會因為以下因素而更高或更低:

    • 移轉的 Visual SourceSafe 資料庫大小。

    • 要移轉的動作數目。

  2. 移轉功能要求 Team 專案集合和 Team 專案已經存在 Team Foundation 版本控制的伺服器上,然後才可以開始移轉程序。 如果您還沒有 Team 專案集合或 Team 專案可將您的 Visual SourceSafe 資料移轉到其中,請執行下列一個或兩個步驟:

    • 建立 Team 專案集合,讓您將 Visual SourceSafe 資料庫中的資料移轉到其中。 如需詳細資訊,請參閱建立 Team 專案集合

    • 建立一個或多個 Team 專案,讓您將 Visual SourceSafe 資料庫中的資料移轉到其中。 如需詳細資訊,請參閱建立 Team 專案

分析您的資料

在您將 Visual SourceSafe 中的資料移轉到 Team Foundation 版本控制之前,您應該先使用 Visual SourceSafe 轉換器的「分析」功能來判斷資料中是否有任何問題將會影響移轉的結果。 這個功能也會產生一個使用者對應檔,移轉功能會使用這個檔案來移轉資料。

建立分析設定檔

若要使用分析功能,您必須先建立設定檔。 在這個檔案中,您會指定您將移轉之 Visual SourceSafe 資料庫的路徑以及您想要移轉的資料夾。

下列 XML 是分析設定檔的範例。

<?xml version="1.0" encoding="utf-8"?>
<SourceControlConverter>
<ConverterSpecificSetting>
     <Source name="VSS">
          <VSSDatabase name="c:\ourvss"></VSSDatabase>
          <UserMap name="c:\ourvss\migrate\Usermap.xml"></UserMap>
     </Source>
     <ProjectMap>
          <Project Source="$/Core"></Project>
          <Project Source="$/ProjectA"></Project>
          <Project Source="$/ProjectB"></Project>
     </ProjectMap>
</ConverterSpecificSetting>
<Settings>
     <Output file="c:\ourvss\migrate\logs\ContosoVSSAnalyze.xml"></Output>
</Settings>
</SourceControlConverter>

您可以複製上一個範例,並將它貼到自己的設定檔,然後加以修改。 下列資訊可幫助您根據您的需求來改寫範例。

<?xml encoding> 屬性

<?xml encoding> 屬性必須符合設定檔中所使用的編碼方式。 例如,如果此檔案儲存為 Unicode,則 <?xml encoding> 標記會如下所示:

<?xml version="1.0" encoding="unicode">

<VSSDatabase name> 屬性

在 <VSSDatabase name> 屬性中,針對您要移轉之 Visual SourceSafe 資料庫的複本指定包含 srcsafe.ini 檔案的資料夾路徑。下列程式碼就是一個範例。

<Source name="VSS">
   ...
   <VSSDatabase name="c:\ourvss"></VSSDatabase>
   ...
</Source>

此路徑不得包含 srcsafe.ini 字串。 例如,下列 <VSSDatabase name> 屬性不正確,而且會導致 VSSConverter 命令失敗:

<Source name="VSS">
   ...
   <VSSDatabase name="c:\ourvss\srcsafe.ini"></VSSDatabase>
   ...
</Source>

<UserMap name> 屬性

分析功能會收集及編譯有關 Visual SourceSafe 使用者的資料,並將其儲存在 XML 檔案中。 您也可以選擇指定檔案的路徑和名稱,您希望此資料儲存在這個檔案的 <UserMap name> 屬性中。 如果您未指定這個屬性,分析功能會建立一個名為 UserMap.xml 的檔案,並將它放在目前的目錄中。

<ProjectMap> 區段

在 <ProjectMap> 區段中,於 <Project> 項目的 Source 屬性中指定您想要移轉之每一個 Visual SourceSafe 專案的路徑。

若要移轉 Visual SourceSafe 資料庫中的所有資料,請讓 <ProjectMap> 區段符合以下範例:

<ProjectMap>
   <Project From="$/"></Project>
</ProjectMap>

您可以在不同時間移轉選取的專案,而不用同時移轉整個 Visual SourceSafe 資料庫。 如果您有許多資料要移轉,這個選項可在移轉期間幫助您避免阻礙團隊工作。

Source 屬性中的路徑不得重疊。 例如,下列 <ProjectMap> 區段無效:

<ProjectMap>
   <Project Source="$/ProjectA"></Project>
   <Project Source="$/ProjectA/Controller"></Project>
</ProjectMap>

<Output file> 屬性

在 <Settings> 區段的 <Output file> 屬性中,您可以指定您想要寫入分析報表的目標檔案路徑和名稱。 如果您未指定這個屬性,轉換器會將報表寫入名為 VSSAnalysisReport.xml 的檔案,並將它放在目前的目錄中。

<SQL> 元素

若要導向轉換器來使用 SQL Server 而不是 SQL Server Express,您可以將 <SQL> 元素加入至移轉設定檔的 <Source> 區段。 此元素會使用下列語法:<SQL Server="SQL_Server_name"></SQL>.

例如,下列 <SQL> 元素指示伺服器為 "ContosoSQLServer":

<Source name="VSS">
   ...
   <SQL Server="ContosoSQLServer"></SQL>
   ...
</Source>

執行分析命令

若要使用轉換器分析專案

  1. 按一下 [開始],依序指向 [所有程式]、[Microsoft Visual Studio 2010]、[Visual Studio Tools],並以滑鼠右鍵按一下 [Visual Studio 10.0 命令提示字元],然後按一下 [以系統管理員身分執行]。

    如果出現 [使用者帳戶控制] 對話方塊,請按一下 [繼續]。

  2. 輸入下列命令列:

    VSSConverter Analyze settings.xml

    使用您所建立之分析設定檔的路徑和名稱取代 settings.xml。

  3. 當您看到提示時,請提供 Visual SourceSafe 的系統管理員密碼。

    VSSConverter 會在分析功能進行時顯示進行中的狀態。 當此程序完成時,分析功能會產生報告和使用者對應檔。

檢閱及解決分析功能找到的問題

分析報表會提供您的 Visual SourceSafe 資料庫在移轉過程中,可能會導致問題發生之相關問題的資訊。 請嘗試盡量解決多一點的這類問題,讓移轉程序的問題減至最少,如下一節所述。

某些檔案已簽出

此報表會列出目前已簽出的檔案。 移轉程序不會保存簽出資訊。 在理想狀況下,Visual SourceSafe 資料庫中的所有檔案應該都要簽入。 請至少嘗試簽入多一點的檔案。

某些項目有資料完整性問題

此報表列出資料完整性受到影響的項目。 這些項目將不會移轉。 Visual SourceSafe ANALYZE 公用程式或許能夠修正這類問題。 如需詳細資訊,請參閱 Microsoft 網站的下列網頁:ANALYZE 公用程式 (英文) 和如何在 Visual SourceSafe 中偵測及修正資料庫損毀錯誤 (機器譯文)。

對應專案中的某些資料夾包含了 <ProjectMap> 區段中所未包含的記錄

如果將資料夾從某個專案移到 Visual SourceSafe 資料庫中的另一個專案,該資料夾的記錄會同時包含在原始專案和目前專案中。 若要移轉這類資料夾以及其所有記錄,您必須同時移轉原始專案和目前專案。

例如,您要移轉 Visual SourceSafe 專案 Project2。 此專案包含 $/Project2/FeatureA 資料夾,這個資料夾在其記錄中的某個時間點從 Project1 移動而來。

如果您的 <ProjectMap> 區段包含…

例如…

則…

兩個專案。

<ProjectMap>
   <Project Source="$/Project1"></Project>
   <Project Source="$/Project2"></Project>
</ProjectMap>

移轉資料夾以及其完整記錄。

原本包含此資料夾的專案,而不是目前包含此資料夾的專案。

<ProjectMap>
   <Project Source="$/Project1"></Project>
</ProjectMap>

未移轉此資料夾。

目前包含此資料夾的專案,而不是原本包含此資料夾的專案。

<ProjectMap>
   <Project Source="$/Project2"></Project>
</ProjectMap>

移轉資料夾連同其記錄 (從資料夾移到目前專案開始的記錄)。 資料夾移到目前專案之前發生的記錄將不會移轉。

如需設定檔之 <ProjectMap> 區段的詳細資訊,請參閱本主題稍早的 <ProjectMap> 區段。

Team Foundation 版本控制不支援某些標籤名稱

此報告列出移轉時將會變更的標籤名稱,因為這些標籤名稱包含了 Team Foundation 版本控制 所不支援的字元。

移轉您的資料

當您執行「分析」功能之後,幾乎就可以開始準備移轉資料。 在您執行移轉命令之前,必須先建立移轉設定檔。 您可以選擇指定要如何移轉使用者名稱。

指定如何移轉使用者名稱

您可以控制使用者資訊如何從 Visual SourceSafe 移轉至 Team Foundation 版本控制。 您可以明確指定,移轉功能應該將哪一個使用者名稱與 Team Foundation 版本控制中每一個項目記錄的每個變更集產生關聯。 其作法是編輯當您執行分析功能時所建立的使用者對應檔,如同本主題稍早所說明。

使用者對應檔為選擇性。 如果您省略設定檔中的 <UserMap> 元素,就會依下列方式建立每一個變更集:

  • [使用者] 欄位會設定為執行 VSSConverter 所使用的帳戶名稱。

  • 在您的 Visual SourceSafe 資料庫中執行此動作的使用者名稱會儲存在 [註解] 欄位中。

使用者對應檔範例

當您執行分析功能時,它會編譯有關 Visual SourceSafe 使用者的資料,並將其儲存在 XML 檔案中。 這個檔案會列出在您所移轉的 Visual SourceSafe 專案中,曾經執行版本控制作業的每一個 Visual SourceSafe 使用者。

下列範例顯示之前由 Visual SourceSafe 轉換器分析功能所建立的使用者對應檔。

<?xml version="1.0" encoding="utf-8"?>
<UserMappings>
   <UserMap From="Admin" To=""></UserMap>
   <UserMap From="Guest" To=""></UserMap> 
   <UserMap From="Kim" To=""></UserMap>
   <UserMap From="Satomi" To=""></UserMap>
   <UserMap From="Mark" To=""></UserMap>
</UserMappings>

您可以在使用者對應檔中,將 To 屬性指定為無、部分或所有 UserMap 項目。 例如,您可以依下列方式修改上述範例:

<?xml version="1.0" encoding="utf-8"?>
<UserMappings>
   <UserMap From="Admin" To="NORTHAMERICA\KenM"></UserMap>
   <UserMap From="Guest" To="Test1"></UserMap> 
   <UserMap From="Kim" To="EUROPE\KimT"></UserMap>
   <UserMap From="Satomi" To="ASIA\SatomiH"></UserMap>
   <UserMap From="Mark" To=""></UserMap>
</UserMappings>

請注意,在上述範例中,Guest 會對應到 Test1 而且未指定任何網域。 在這些案例中,VSSConverter 假設帳戶屬於預設網域。

如果您未指定 <UserMap To> 屬性,就會依下列方式建立每一個變更集:

  • [使用者] 欄位會設定為執行 VSSConverter 所使用的帳戶名稱。

  • 在您的 Visual SourceSafe 資料庫中執行此動作的使用者名稱會儲存在 [註解] 欄位中。

  • 如果您指定 <UserMap To> 屬性而且此值在執行 Team Foundation 的伺服器上為有效的使用者,則 [使用者] 欄位會設定為該帳戶的名稱。 如果此值在執行 Team Foundation 的伺服器上不是有效的使用者,則 VSSConverter 將會顯示錯誤,並結束移轉程序。

建立移轉設定檔

您可使用移轉設定檔來指定您想要移轉哪些 Visual SourceSafe 資料,並控制您想要移轉該資料之方式的幾個層面。 建立這個檔案有一個最簡單的方法,就是複製您在本主題稍早的建立分析設定檔中所建立的檔案。 然後您可在檔案中加入更多資料,好讓它可供移轉功能使用。

下列範例顯示移轉設定檔。

<?xml version="1.0" encoding="utf-8"?>
<SourceControlConverter>
<ConverterSpecificSetting>
     <Source name="VSS">
          <VSSDatabase name="c:\ourvss"></VSSDatabase>
          <UserMap name="c:\ourvss\migrate\Usermap.xml"></UserMap>
     </Source>
     <ProjectMap>
          <Project Source="$/Core" Destination="$/CoreTeamProject"></Project>
          <Project Source="$/ProjectA" Destination="$/ClientTeamProject/ProjectA"></Project>
          <Project Source="$/ProjectB" Destination="$/ClientTeamProject/ProjectB"></Project>
     </ProjectMap>
</ConverterSpecificSetting>
<Settings>
     <TeamFoundationServer name="My_Server" port="8080" protocol="http" collection="tfs/DefaultCollection"></TeamFoundationServer>
     <Output file="c:\ourvss\migrate\logs\ContosoVSSMigrate.xml"></Output>
</Settings>
</SourceControlConverter>

下列資訊可幫助您修改設定檔,以指定移轉功能將要如何移轉資料。

<Project Destination> 屬性

針對設定檔之 <ProjectMap> 區段內的每一個 <Project> 元素,提供 Destination 屬性來指定 Team Foundation 版本控制伺服器上位置的路徑,也就是您想要在 Visual SourceSafe 資料庫中移轉專案內容的地方 (在 Source 屬性中指定)。

例如,您想要將 Visual SourceSafe 資料庫中的 ProjectA 內容移轉到 Team 專案根部 (稱為 Client) 的 ProjectA 。

<ProjectMap>
   <Project Source="$/ProjectA" Destination="$/ClientTeamProject/ProjectA"></Project>
</ProjectMap>

如果要讓 Destination 屬性中的值有效,下列條件必須成立:

  • Destination 屬性中的 Team 專案 (在上述範例中,Team 專案為 ClientTeamProject) 必須已經位於 Team 專案集合中,您才能開始移轉程序。

  • 如果 Destination 屬性中的資料夾 (在上述範例中,此資料夾為 ProjectA) 已經位於 Team 專案中,此資料夾必須是空的。

  • <Project> 元素之 Destination 屬性中的路徑不得與任何其他 <Project> 元素之 Destination 屬性中的路徑重疊。 例如,下列 <ProjectMap> 區段無效:

    <ProjectMap>
       <Project Source="$/ProjectA" Destination="$/ClientTeamProjectA/"></Project>
       <Project Source="$/ProjectB" Destination="$/ClientTeamProjectA/ProjectB"></Project>
    </ProjectMap>
    

<TeamFoundationServer> 標記

在 <Settings> 區段中加入 <TeamFoundationServer> 標記,並使用下列格式指定 Team 專案集合在執行 Team Foundation Server 之伺服器上的名稱、通訊埠、通訊協定和路徑:

<TeamFoundationServer name="ServerName" port="PortNumber" protocol="http" collection="path/collection name></TeamFoundationServer>

<Label migrate="false" /> 標記

如果您的 Visual SourceSafe 資料庫包含許多會套用到許多檔案的標籤,移轉程序的作業時間可能會延長。 如果您的團隊不需要此資料,您可以將 <Label migrate="false" /> 標記加入至 <Settings> 區段來設定 VSSConverter 忽略標籤。

<Output file> 屬性

在 <Settings> 區段的 <Output file> 屬性中,您可以指定您想要寫入移轉報表的路徑和檔案。 如果您未包含此屬性,轉換器會將報表寫入名為 VSSMigrationReport.xml 的檔案,並將它放在目前的目錄中。

執行移轉命令

若要執行移轉命令

  1. 按一下 [開始],依序指向 [所有程式]、[Microsoft Visual Studio 2010]、[Visual Studio Tools],並以滑鼠右鍵按一下 [Visual Studio 10.0 命令提示字元],然後按一下 [以系統管理員身分執行]。

    如果出現 [使用者帳戶控制] 對話方塊,請按一下 [繼續]。

  2. 在命令提示字元中,輸入下列命令列:

    VSSConverter Migrate settings.xml

    使用您所建立之移轉設定檔的路徑和名稱取代 settings.xml。

    移轉功能會顯示您從 Visual SourceSafe 資料庫移轉的每一個專案,以及 Team Foundation 版本控制伺服器上將用來移轉資料的每一個目標資料夾。

  3. 當系統提示您時,請按 Y 確認移轉。

  4. 當系統提示您時,請輸入管理 Visual SourceSafe 資料庫之使用者的密碼。

在此過程中,移轉功能會在 [命令提示字元] 視窗中顯示其目前狀態。

使用累加移轉繼續此程序

如果移轉程序因某個原因而被中斷,您可以從之前結束程序的那一點,以累加移轉的形式繼續移轉程序。 如果移轉程序因為錯誤或網路問題而失敗,累加移轉可能會很實用。 在累加移轉期間,轉換器將只會移轉未在先前工作階段中移轉的資料。

若要開始累加移轉,請遵循執行移轉命令中的步驟執行。 當移轉功能詢問您是否要執行累加移轉時,請按 Y

累加移轉的限制

只有當您遵守以下限制時,累加移轉才會成功:

  • 在您的 Visual SourceSafe 資料庫中,不得執行終結、清除、封存或還原作業。

  • 您不得變更移轉設定檔的 <ProjectMap> 區段。

  • 在您的 Team Foundation 版本控制伺服器上,不得修改移轉設定檔之 <ProjectMap> 區段中所指定的任何資料夾 (或是資料夾中的任何內容)。

確認移轉及解決問題

在完成移轉功能之後,您應該執行下列步驟:

  • 檢閱移轉功能所產生的報告。

  • 檢查 Team Foundation 版本控制伺服器上的資料,以確定資料已正確移轉。

當您採取這些步驟之後,您可能必須排除問題。

如何解決超出 SQL Server Express 儲存限制的問題

根據預設,VSSConverter 會使用 SQL Server Express 來儲存暫時性中繼資料。 此中繼資料通常只需要您所移轉之資料大小總計的少量百分比。 萬一移轉作業真的因為超過 SQL Server Express 的 4 GB 上限而失敗,您可以套用一項設定,引導轉換器改用 SQL Server 部署。 如需詳細資訊,請參閱本主題稍早的 <SQL> 元素。

轉換 MS-DOS 相容簡短名稱 (8.3) 格式的檔案 (TF227014)

Team Foundation 版本控制不允許使用 MS-DOS 相容簡短名稱 (8.3) 格式的檔案名稱 (例如,abcdef~1.txt)。 當您分析或嘗試移轉擁有這類名稱的檔案時,將會出現 TF227014 錯誤。

若要解決此問題,您可以暫時將一項設定套用至 Team Foundation 的應用程式層,好讓它允許具有這類名稱的檔案。 若要這麼做,您必須在 Team Foundation 的組態資料庫中,將 Allow8Dot3Paths 設定為 True

重要事項重要事項

為了避免支援 MS-DOS 相容簡短名稱的用戶端機器發生問題,當您完成移轉程序之後,強烈建議您將 Allow8Dot3Paths 設定為 False,如下列程序所述。

若要執行下列程序,Team Foundation 的應用程式層伺服器上必須啟用 Windows PowerShell。 如需詳細資訊,請參閱 Microsoft 網站的下列主題:使用 Windows PowerShell 撰寫指令碼

必要的使用權限

您必須是 Team Foundation 應用程式層伺服器上 [Administrators] 群組的成員,才能執行此程序。 如需詳細資訊,請參閱 Team Foundation Server 使用權限

若要移轉的 Visual SourceSafe 資料庫包含了 MS-DOS 相容簡短名稱格式的檔案

  1. 登入 Team Foundation 的應用程式層伺服器。

  2. 建立名為 Allow8Dot3Paths 的 Windows PowerShell 指令碼。

    1. 複製 Allow8Dot3Paths PowerShell 指令碼中的文字,並將該文字貼到指令碼中。

    2. 變更 ServerPath,使其符合您用來連接 Team Foundation Server 之 URL 中的路徑。 依預設,伺服器路徑為 "tfs"。

    3. 變更 CollectionName,使其符合您要將資料移轉到其中的 Team 專案集合名稱 (例如 DefaultCollection)。

      舉例來說,最後結果會是指令碼中的以下這一行:

      $collectionBaseUrl = "https://localhost:8080/tfs/DefaultCollection/";
      
  3. 執行 Allow8Dot3Paths 指令碼。

  4. 回收 Team Foundation 的應用程式集區。

    1. 依序按一下 [開始]、[系統管理工具],然後按一下 [電腦管理]。

    2. 在瀏覽窗格中,展開 [服務及應用程式]。

    3. 按一下 [Internet Information Services (IIS) 管理員],展開本機電腦,然後按兩下 [應用程式集區]。

    4. 以滑鼠右鍵按一下該應用程式集區,然後按一下 [回收]。

  5. 執行移轉命令。

    如需詳細資訊,請參閱執行移轉命令。

  6. 修改您之前建立的 Allow8Dot3Paths Windows PowerShell 指令碼,以 "false" 取代 "true"。

  7. 執行修改過的 Allow8Dot3Paths 指令碼。

  8. 回收 Team Foundation 的應用程式集區。

    1. 依序按一下 [開始]、[系統管理工具],然後按一下 [電腦管理]。

    2. 在瀏覽窗格中,展開 [服務及應用程式]。

    3. 按一下 [Internet Information Services (IIS) 管理員],展開本機電腦,然後按兩下 [應用程式集區]。

    4. 以滑鼠右鍵按一下該應用程式集區,然後按一下 [回收]。

  9. 開啟 Team 總管,並連接至您將資料移轉到其中的 Team 專案集合。

  10. 在 [原始檔控制總管] 中,將名稱為 MS-DOS 相容簡短名稱 (8.3) 格式的任何檔案重新命名。

Allow8Dot3Paths PowerShell 指令碼

# Load client OM assembly.
[Reflection.Assembly]::Load("Microsoft.TeamFoundation.Client, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");

$collectionBaseUrl = "https://localhost:8080/ServerPath/CollectionName/";

$tfs = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($collectionBaseUrl);
$collectionHive = $tfs.GetService([Microsoft.TeamFoundation.Framework.Client.ITeamFoundationRegistry]);

# Set some version control settings in the collection hive.
$collectionHive.SetValue("/Service/VersionControl/Settings/Allow8Dot3Paths", "True");

# Display all version control settings as a table.
$collectionHive.ReadEntries("/Service/VersionControl/Settings/...") | ft -a

VSSConverter 如何轉換您的資料

Team Foundation 和 Visual SourceSafe 有顯著的功能差異。 因此,VSSConverter 在移轉某些種類的資料時,必須加以修改。

變更集

Team Foundation 版本控制的一個主要功能是在使用者簽入一組變更時,要如何將多個檔案的變更分組成一個單位。 這個單位稱為變更集。

Visual SourceSafe 並沒有相當於變更集的功能。 但是在轉換程序期間,只要下列條件成立,每一組變更都會分組為變更集:

  • 變更彼此不衝突。 例如,不會有兩個動作影響同一個檔案或資料夾。

  • 彼此變更發生的時間不超過幾分鐘。

  • 變更是由相同的使用者簽入。

  • 變更有相同的簽入註解。

如需詳細資訊,請參閱使用變更集

共用和固定

在 Visual SourceSafe 中,可以跨多個資料夾共用檔案。 在共用檔案中進行的變更會橫跨共用檔案的資料夾進行複寫。 Team Foundation 版本控制沒有同等功能。 在移轉期間,Visual SourceSafe 專案中共用檔案的移轉方式是在 Team Foundation 版本控制伺服器上建立此項目的其他獨立複本。

Team Foundation 版本控制並沒有任何功能相當於 Visual SourceSafe 中的固定功能。 在移轉期間,Visual SourceSafe 專案中的固定項目會轉換成 Team Foundation 版本控制伺服器上的標籤項目。 如需詳細資訊,請參閱下一章節。

如需 Team Foundation 版本控制中標籤的詳細資訊,請參閱使用標籤來建立檔案的快照

記錄資料

Visual SourceSafe 資料庫中項目記錄內的每個事件都會當做變更集傳輸到 Team Foundation 版本控制的伺服器上。 移轉程序完成之後,您可以在 [記錄] 視窗中檢視此資料。 如需詳細資訊,請參閱使用記錄視窗

資料的某些變更會在移轉期間發生。

如何移轉有關使用者名稱及日期和時間戳記的資料

當 Visual SourceSafe 資料庫中項目記錄內的每個項目移轉到 Team Foundation 版本控制伺服器上的變更集時,將會發生以下變更:

  • 變更集上的日期和時間戳記會設定為移轉項目時的日期和時間。

  • 原始日期和時間戳記會儲存在變更集的 [註解] 欄位中。

  • 使用者名稱會儲存在變更集的 [使用者] 欄位或 [註解] 欄位中 (視使用者對應程序的結果而定)。 如需詳細資訊,請參閱本主題稍早的指定如何移轉使用者名稱。

如何轉換特定類型的事件

事件 (例如編輯、重新命名和刪除) 會以直接的方式從您的 Visual SourceSafe 資料庫移轉到 Team Foundation 版本控制伺服器上的變更集中。 但是,VSSConverter 移轉某些事件的方式可能不是您所預期的方式,如下表所示。

Visual SourceSafe 事件

如何移轉到 Team Foundation

加入檔案或資料夾

此變更集是移轉之每一個檔案和資料夾記錄內的第一個事件。

不會針對其所包含之每一個子項目的父代記錄任何事件,與 Visual SourceSafe 不同。

分支

共用是 Visual SourceSafe 中分支的先前條件,但是 Team Foundation 版本控制不支援共用。因此,移轉分支檔案會在目的資料夾中建立此檔案的複本。 

Visual SourceSafe 資料庫中的共用檔案會移轉到 Team Foundation 版本控制,其方式是複製共用檔案時已存在之檔案的版本,並將該版本放在目的資料夾中。 之後,每一個變更集都會在這兩個檔案複本中複寫,直到發生分支事件為止。

標記檔案 

在 Team Foundation 中,將標籤套用至檔案或資料夾的版本。 在 Visual SourceSafe 中,您可以明確或隱含標記檔案。 在 Visual SourceSafe 中明確標記檔案時,就會建立該檔案的新版本。如果您藉由使用該標籤來取得檔案,您所得到的檔案內容會對應至之前建立標籤時就已存在的檔案版本。 若要移轉明確標籤,轉換器會取得對應至 Visual SourceSafe 中標記版本的標籤,並將它套用到 Team Foundation 中的版本。 但是,它不會建立新版本。

當您將標籤套用至 Visual SourceSafe 中的資料夾時,此標籤會隱含地套用至該資料夾底下的所有檔案和資料夾,而且轉換器不會建立新的版本。 若是隱含標籤,轉換器不會執行任何動作,因為 Team Foundation 中對應的版本會在移轉資料夾上的明確標籤期間,自動加上標籤。

注意事項注意事項
如果您的 Visual SourceSafe 資料庫包含許多會套用到許多檔案的標籤,移轉程序的作業時間可能會延長。如果您的團隊不需要此資料,您可以設定 VSSConverter 忽略標籤。如需詳細資訊,請參閱本主題稍早的 <Label migrate="false" />。

標記資料夾

當您在 Visual SourceSafe 中將標籤套用至資料夾時,將會隱含標記該資料夾下的所有檔案和資料夾,而且不會建立新的版本。 在移轉這些資料夾期間,轉換器會將標籤套用至 Team Foundation 中對應的資料夾版本。 這個行為會自動將標籤套用至已標記資料夾內的目前檔案和資料夾版本。

注意事項注意事項
如果您的 Visual SourceSafe 資料庫包含許多會套用到許多檔案的標籤,移轉程序的作業時間可能會延長。如果您的團隊不需要此資料,您可以設定 VSSConverter 忽略標籤。如需詳細資訊,請參閱 <Label migrate="false" />。

移動資料夾

移動資料夾事件會在 Team Foundation 中建立資料夾的新版本。

只有當來源資料夾和目的資料夾同時移轉時,VSSConverter 才會移轉已移動之資料夾內的完整項目記錄。 如需詳細資訊,請參閱檢閱及解決分析功能找到的問題。

注意事項注意事項
如果移動資料夾事件結合了還原事件,則可能不會正確移轉記錄資料。

還原

移轉還原事件之前不會有任何記錄資料。

PIN 和 UNPIN

Team Foundation 版本控制不支援固定。 VSSConverter 會藉由建立兩個標籤來移轉固定檔案。

PINNED_LATEST 標籤會套用至固定檔案的固定版本以及未固定檔案的最新版本。 而 PINNED 標籤則只會套用至固定檔案的固定版本。 移轉之後,PINNED_LATEST 標籤會擷取與 Visual SourceSafe 中的 Get Latest 相同的檔案。 但是,如果在檔案固定之後發生簽入以外的事件 (例如重新命名或刪除檔案),則 PINNED_LATEST 標籤可能會傳回不同的檔案。

共用

Team Foundation 版本控制不支援共用。 Visual SourceSafe 資料庫中的共用檔案會移轉到 Team Foundation 版本控制,其方式是複製共用檔案時已存在之檔案的版本,並將該版本放在目的資料夾中。 之後,每一個變更集都會在這兩個檔案複本中複寫。

取消刪除檔案或資料夾

在移轉檔案或資料夾的取消刪除事件期間,轉換器會重新執行事件,以便在 Team Foundation 中建立檔案和資料夾的新版本。

VSSConverter 會建立變更集,其中包含檔案或資料夾名稱、取消刪除檔案或資料夾的日期與時間以及使用者名稱。

原始檔控制繫結

VSSConverter 會還原每一個方案的版本控制繫結。