共用方式為


使用 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> 區段中所指定的任何資料夾 (或是資料夾中的任何內容)。

後續步驟

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