共用方式為


使用 VSSUpgrade 命令提示字元工具從 Visual SourceSafe 升級

在大部分情況下,您應該使用 VSS 升級精靈,而不是 VssUpgrade 命令提示工具來升級您的 Visual SourceSafe 資料。不過,還是有少數的情況,您可能會想要在其中使用 VssUpgrade 命令提示工具來升級到內部部署 Team Foundation Server (TFS)。

若要使用 VSSUpgrade 升級您的 Visual SourceSafe 資料

  1. 了解工具如何轉換您的資料 TFS 和 Visual SourceSafe 在功能上有顯著的差異。因此,Visual SourceSafe 升級工具會在升級期間修改特定種類的資料。

  2. 準備升級開始升級程序之前,請務必預先規劃並準備您的資料。

    重要事項重要事項

    在您繼續之前,必須在 Visual SourceSafe 儲存機制上執行 Visual SourceSafe ANALYZE 公用程式。請參閱複製及準備您的 Visual SourceSafe 資料庫

  3. 了解獨特的 VssUpgrade 功能。如果您不需要其中任何一個,則應該使用 VSS 升級精靈

  4. 分析您的資料:在您將 Visual SourceSafe 中的資料升級至 Team Foundation 版本控制 之前,您必須使用 [分析] 命令來判斷資料中是否有任何問題將會影響升級的結果。這個程序也會產生升級資料所需的使用者對應檔。

  5. 升級您的資料:若要升級資料,您必須指定如何升級使用者名稱、建立移轉設定檔案,然後執行 [移轉] 命令。

  6. 檢視和驗證結果,並視需要解決問題。

VssUpgrade 功能

如果您想要將資料升級和移植到內部部署 Team 專案和下列目標,請使用 VssUpgrade:

  • 做為自動化方法 (例如指令碼) 的一部分來執行升級。

  • 使用您指定的資料夾結構,將多個 Visual SourceSafe 專案移轉至單一 Team 專案中。

  • 指定如何轉換使用者資料,例如從 Visual SourceSafe 中的 Kim 轉換為 TFS 中的 EUROPE\KimT。

  • 在 Visual SourceSafe 資料中忽略標籤。

  • 當升級大量資料時,在程序中斷之後繼續 (例如,由於網路錯誤中斷)。

如果您不需要這其中任何一項功能,或是您需要將資料升級並移植到 Team Foundation Service 上的 Team 專案集合,則應用程式使用 VSS 升級精靈,而不是 VssUpgrade。

分析您的資料

將 Visual SourceSafe 中的資料升級至 TFS 版本控制之前,您必須先使用 [分析] 命令來判斷資料中是否有任何問題將會影響升級的結果。這個命令也會產生一個使用者對應檔,[移轉] 命令會使用這個檔案來升級資料。

ms253090.collapse_all(zh-tw,VS.110).gif建立分析設定檔

執行 [分析] 命令之前,您必須先建立分析設定檔。在這個檔案中,您會指定您將升級之 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>

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

ms253090.collapse_all(zh-tw,VS.110).gif<?xml encoding> 屬性

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

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

ms253090.collapse_all(zh-tw,VS.110).gif<VSSDatabase name> 屬性

在 <VSSDatabase name> 屬性中,針對您要升級之 Visual SourceSafe 資料庫的複本指定包含 srcsafe.ini 檔案的資料夾路徑。例如:

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

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

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

ms253090.collapse_all(zh-tw,VS.110).gif<UserMap name> 屬性

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

ms253090.collapse_all(zh-tw,VS.110).gif<ProjectMap> 區段

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

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

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

您可以在不同時間升級選取的專案,而不用同時升級整個 Visual SourceSafe 資料庫。

提示提示

如果您有許多要升級的資料,請使用這個選項用避免在升級時封鎖您的小組。

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

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

ms253090.collapse_all(zh-tw,VS.110).gif<Output file> 屬性

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

ms253090.collapse_all(zh-tw,VS.110).gif<SQL> 元素

您必須將 <SQL> 項目加入至分析設定檔的 <Source> 區段來指定 VssUpgrade 的資料庫,以便用來儲存暫存資料。此元素會使用下列語法:<SQL Server="SQL_Server_name"></SQL>.

例如,假設您是在名為 FABRIKAM-2 的電腦上執行 VssUpgrade,若要使用同一台電腦上的本機 SQL Server Express 執行個體:

<Source name="VSS">
   ...
   <SQL Server="fabrikam-2\sqlexpress"></SQL>
   ...
</Source>

若要指示轉換器使用 SQL Server (例如名為 FabrikamSQLServer 的伺服器)

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

ms253090.collapse_all(zh-tw,VS.110).gif執行分析命令

  1. 從 Windows [開始],以系統管理員身分執行 [命令提示字元]。

  2. 在 [系統管理員: 命令提示字元] 視窗中,輸入:

    VssUpgrade Analyze settings.xml

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

  3. 出現提示時,輸入您的 Visual SourceSafe 資料庫的系統管理員密碼。如果資料庫沒有密碼,請按 Enter。

VssUpgrade 會在 [分析] 命令進行時顯示進行中狀態。當程序完成時,系統會摘要說明結果。例如:

Analyze complete.
Analyzed 859 files and 941 folders.
Warnings 0 and Errors 0
Pre-migration report file: C:\VSS\migrate\VSSAnalysisReport.xml

如果有任何警告或錯誤,您可以在 ConverterErrors.txtVSSUpgrade.log 中找到相關的詳細資料。

[分析] 命令會產生:

  • 報告,您可以用來取得 [移轉] 命令可能產生之問題和變更的詳細資料。

  • 使用者對應檔 (Usermap.xml),您可以使用這個檔案來指定如何在升級程序中轉換使用者資料。

這些檔案將在下面詳細說明。

ms253090.collapse_all(zh-tw,VS.110).gif檢閱及解決分析命令找到的問題

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

ms253090.collapse_all(zh-tw,VS.110).gif某些檔案已簽出

此報表會列出目前已簽出的檔案。升級程序不會保存簽出資訊。嘗試確保在升級前簽入盡可能多的檔案。

ms253090.collapse_all(zh-tw,VS.110).gif某些項目有資料完整性問題

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

ms253090.collapse_all(zh-tw,VS.110).gif對應專案中的某些資料夾包含了 <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> 區段。

ms253090.collapse_all(zh-tw,VS.110).gifTeam Foundation 版本控制不支援某些標籤名稱

此報表會列出升級時將會變更的標籤名稱,因為這些標籤名稱包含了 TFS 版本控制所不支援的字元。請參閱 Team Foundation 中的命名限制

升級您的資料

執行 [分析] 命令之後,您幾乎已就緒可以將資料升級。執行 [移轉] 命令之前,您必須先建立設定檔。或者,您可以選擇指定如何升級使用者名稱。

ms253090.collapse_all(zh-tw,VS.110).gif指定如何升級使用者名稱

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

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

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

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

ms253090.collapse_all(zh-tw,VS.110).gif使用者對應檔範例

當您執行 [分析] 命令時,它會編譯有關 Visual SourceSafe 使用者的資料,並將其儲存在 XML 檔案中。這個檔案會列出在您要升級的 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 而且未指定任何網域。在這些案例中,VssUpgrade 假設帳戶屬於預設網域。

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

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

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

  • 如果您指定 <UserMap To> 屬性,而此值是在 Team Foundation Server 上的有效使用者,則 [使用者] 欄位會設定為該帳戶的名稱。如果這個值不是 Team Foundation Server 上的有效使用者,則 VssUpgrade 將會顯示錯誤並結束升級程序。

ms253090.collapse_all(zh-tw,VS.110).gif建立移轉設定檔

您可使用移轉設定檔來指定您想要升級哪些 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>

下列資訊可幫助您修改移轉設定檔,以指定 [移轉] 命令升級資料的方式。

ms253090.collapse_all(zh-tw,VS.110).gif<ProjectMap>

針對移轉設定檔之 <ProjectMap> 區段中的每個 <Project> 項目,提供 Destination 屬性來指定 Team Foundation Server 上的位置路徑,也就是您想要在 Visual SourceSafe 資料庫中升級專案內容的地方 (在 Source 屬性中指定)。

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

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

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

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

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

    <ProjectMap>
       <Project Source="$/ProjectA" Destination="$/ClientTeamProjectA/"></Project>
       <Project Source="$/ProjectB" Destination="$/ClientTeamProjectA/ProjectB"></Project>
    </ProjectMap>
    
注意事項注意事項

如果 Destination 屬性中的資料夾包含任何項目,而且有任何一個 Visual Source Safe 項目的路徑與任何這些項目的版本控制路徑重疊時,升級程序將會失敗。

ms253090.collapse_all(zh-tw,VS.110).gif<TeamFoundationServer> 標記

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

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

ms253090.collapse_all(zh-tw,VS.110).gif<Label migrate="false" /> 標記

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

ms253090.collapse_all(zh-tw,VS.110).gif<Output file> 屬性

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

ms253090.collapse_all(zh-tw,VS.110).gif執行移轉命令

  1. 從 Windows [開始],以系統管理員身分執行 [命令提示字元]。

  2. 在 [系統管理員: 命令提示字元] 視窗中,輸入:

    VssUpgrade Migrate settings.xml

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

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

  3. 出現提示時,輸入您的 Visual SourceSafe 資料庫的系統管理員密碼。如果資料庫沒有密碼,請按 Enter。

  4. 系統會摘要說明其將如何執行升級程序,並要求您確認是否要執行。例如:

    This will start migration with following inputs:
    
    SourceSafe Folders -> Team Foundation Server Folders
    
    $/ -> $/Sequence2
    
    Full history migration of VSS Database: c:\vss
    
    Team Foundation Server: http://fabrikam-4:8080/tfs/DefaultCollection
    Migration Settings File: migrate_settings.xml
    Migration Report: C:\VSS\migrate\VSSMigrationReport.xml
    
    Depending on the VSS database size, migration may take few hours to complete.
    Please verify all inputs are correct and confirm.
    Start migration (Y/N)?
    

    按下 Y 以繼續。

VssUpgrade 會在移轉命令進行時顯示進行中狀態。當程序完成時,系統會摘要說明結果。例如:

Verification of pinned versions: 0 file(s) added, 0 file(s) edited and 86 file(s) label updated
Verification of latest tip versions: No change was required (No fixes required. All latest tip versions were migrated successfully)

Started: Creating label "Pinned_Latest".
Finished: Creating label "Pinned_Latest".

Migration complete.
Migrated 6397 Actions
Warnings 7 and Errors 0
Post migration report file: C:\VSS\migrate\VSSMigrationReport.xml

如果有任何警告或錯誤,您可以在 ConverterErrors.txtVSSUpgrade.log 中找到相關的詳細資料。

[移轉] 命令會產生一份報告,您可以用來取得 [移轉] 命令可能造成之問題和變更的詳細資料。請參閱 從 Visual SourceSafe 升級後繼續執行後續步驟

ms253090.collapse_all(zh-tw,VS.110).gif使用累加升級繼續此程序

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

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

累加升級的限制

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

  • 在您的 Visual SourceSafe 資料庫中,不可以有執行終結、清除、封存或還原的活動。

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

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

後續步驟

檢視和驗證結果,並視需要解決問題。