使用 VSSUpgrade 命令提示字元工具從 Visual SourceSafe 升級
在大部分情況下,您應該使用 VSS 升級精靈,而不是 VssUpgrade 命令提示工具來升級您的 Visual SourceSafe 資料。 不過,還是有少數的情況,您可能會想要在其中使用 VssUpgrade 命令提示工具來升級到內部部署 Team Foundation Server (TFS)。
若要使用 VSSUpgrade 升級您的 Visual SourceSafe 資料
了解工具如何轉換您的資料 TFS 和 Visual SourceSafe 在功能上有顯著的差異。 因此,Visual SourceSafe 升級工具會在升級期間修改特定種類的資料。
準備升級開始升級程序之前,請務必預先規劃並準備您的資料。
重要
在您繼續之前,必須在 Visual SourceSafe 儲存機制上執行 Visual SourceSafe ANALYZE 公用程式。請參閱複製及準備您的 Visual SourceSafe 資料庫。
了解獨特的 VssUpgrade 功能。 如果您不需要其中任何一個,則應該使用 VSS 升級精靈。
分析您的資料:在您將 Visual SourceSafe 中的資料升級至 Team Foundation 版本控制 之前,您必須使用 [分析] 命令來判斷資料中是否有任何問題將會影響升級的結果。 這個程序也會產生升級資料所需的使用者對應檔。
升級您的資料:若要升級資料,您必須指定如何升級使用者名稱、建立移轉設定檔案,然後執行 [移轉] 命令。
VssUpgrade 功能
如果您想要將資料升級和移植到內部部署 Team 專案和下列目標,請使用 VssUpgrade:
做為自動化方法 (例如指令碼) 的一部分來執行升級。
使用您指定的資料夾結構,將多個 Visual SourceSafe 專案移轉至單一 Team 專案中。
指定如何轉換使用者資料,例如從 Visual SourceSafe 中的 Kim 轉換為 TFS 中的 EUROPE\KimT。
在 Visual SourceSafe 資料中忽略標籤。
當升級大量資料時,在程序中斷之後繼續 (例如,由於網路錯誤中斷)。
如果您不需要這其中任何一項功能,或是您需要將資料升級並移植到 Team Foundation Service 上的 Team 專案集合,則應用程式使用 VSS 升級精靈,而不是 VssUpgrade。
分析您的資料
將 Visual SourceSafe 中的資料升級至 TFS 版本控制之前,您必須先使用 [分析] 命令來判斷資料中是否有任何問題將會影響升級的結果。 這個命令也會產生一個使用者對應檔,[移轉] 命令會使用這個檔案來升級資料。
建立分析設定檔
執行 [分析] 命令之前,您必須先建立分析設定檔。 在這個檔案中,您會指定您將升級之 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> 屬性不正確,而且會導致 VssUpgrade 命令失敗:
<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 Source="$/"></Project>
</ProjectMap>
您可以在不同時間升級選取的專案,而不用同時升級整個 Visual SourceSafe 資料庫。
提示
如果您有許多要升級的資料,請使用這個選項用避免在升級時封鎖您的小組。
Source 屬性中的路徑不得重疊。 例如,下列 <ProjectMap> 區段無效:
<ProjectMap>
<Project Source="$/ProjectA"></Project>
<Project Source="$/ProjectA/Controller"></Project>
</ProjectMap>
<Output file> 屬性
在 <Settings> 區段的 <Output file> 屬性中,您可以指定您想要寫入分析報表的目標檔案路徑和名稱。 如果您不指定這個選項,您可以省略 <Output> 標記。 在這個案例中,轉換器會將報表寫入名為 VSSAnalysisReport.xml 的檔案,並將它放在目前的目錄中。
<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>
執行分析命令
從 Windows [開始],以系統管理員身分執行 [命令提示字元]。
在 [系統管理員: 命令提示字元] 視窗中,輸入:
VssUpgrade Analyze settings.xml
使用您所建立之分析設定檔的路徑和名稱取代 settings.xml。
出現提示時,輸入您的 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.txt 和 VSSUpgrade.log 中找到相關的詳細資料。
[分析] 命令會產生:
報告,您可以用來取得 [移轉] 命令可能產生之問題和變更的詳細資料。
使用者對應檔 (Usermap.xml),您可以使用這個檔案來指定如何在升級程序中轉換使用者資料。
這些檔案將在下面詳細說明。
檢閱及解決分析命令找到的問題
分析報表會提供您的 Visual SourceSafe 資料庫在升級過程中,可能會導致問題發生之相關問題的資訊。 請嘗試盡量解決多一點的這類問題,讓升級程序的問題減至最少,如下一節所述。
某些檔案已簽出
此報表會列出目前已簽出的檔案。 升級程序不會保存簽出資訊。 嘗試確保在升級前簽入盡可能多的檔案。
某些項目有資料完整性問題
此報表列出資料完整性受到影響的項目。 Visual SourceSafe ANALYZE 公用程式或許能夠修正這類問題。 無法修復的項目將不會升級。 如需詳細資訊,請參閱 Microsoft 網站的下列網頁:ANALYZE 公用程式 (英文) 和如何在 Visual SourceSafe 中偵測及修正資料庫損毀錯誤 (機器譯文)。
對應專案中的某些資料夾包含了 <ProjectMap> 區段中所未包含的記錄
如果將資料夾從某個專案移到 Visual SourceSafe 資料庫中的另一個專案,該資料夾的記錄會同時包含在原始專案和目前專案中。 若要升級這類資料夾以及其所有記錄,您必須同時升級原始專案和目前專案。
例如,您要升級 Visual SourceSafe 專案 Project2。 此專案包含 $/Project2/FeatureA 資料夾,這個資料夾在其記錄中的某個時間點從 Project1 移動而來。
如果您的 <ProjectMap> 區段包含… |
例如… |
則… |
---|---|---|
兩個專案。 |
|
將資料夾及其完整記錄一起升級。 |
原本包含此資料夾的專案,而不是目前包含此資料夾的專案。 |
|
未升級此資料夾。 |
目前包含此資料夾的專案,而不是原本包含此資料夾的專案。 |
|
升級資料夾連同其記錄 (從資料夾移到目前專案開始的記錄)。 資料夾移到目前專案之前發生的記錄將不會升級。 |
如需設定檔之 <ProjectMap> 區段的詳細資訊,請參閱本主題稍早的 <ProjectMap> 區段。
Team Foundation 版本控制不支援某些標籤名稱
此報表會列出升級時將會變更的標籤名稱,因為這些標籤名稱包含了 TFS 版本控制所不支援的字元。 請參閱 Team Foundation 中的命名限制。
升級您的資料
執行 [分析] 命令之後,您幾乎已就緒可以將資料升級。 執行 [移轉] 命令之前,您必須先建立設定檔。 或者,您可以選擇指定如何升級使用者名稱。
指定如何升級使用者名稱
您可以控制如何將使用者資訊從 Visual Source Safe 升級到 TFS 版本控制。 您可以明確指定,[移轉] 命令應該將哪一個使用者名稱與 TFS 版本控制中每個項目記錄的每個變更集產生關聯。 其作法是編輯當您執行 [分析] 命令時所建立的使用者對應檔,如同本主題稍早所說明。
使用者對應檔為選擇性。 如果您省略分析設定檔中的 <UserMap name> 屬性,就會依下列方式建立每一個變更集:
[使用者] 欄位會設定為執行 VssUpgrade 所使用的帳戶名稱。
在您的 Visual SourceSafe 資料庫中執行此動作的使用者名稱會儲存在 [註解] 欄位中。
使用者對應檔範例
當您執行 [分析] 命令時,它會編譯有關 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 將會顯示錯誤並結束升級程序。
建立移轉設定檔
您可使用移轉設定檔來指定您想要升級哪些 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>
下列資訊可幫助您修改移轉設定檔,以指定 [移轉] 命令升級資料的方式。
<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 項目的路徑與任何這些項目的版本控制路徑重疊時,升級程序將會失敗。 |
<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> 區段來設定 VssUpgrade 忽略標籤。
<Output file> 屬性
在 <Settings> 區段的 <Output file> 屬性中,您可以指定您想要寫入升級報表的路徑和檔案。 如果您未包含此屬性,轉換器會將報表寫入名為 VSSMigrationReport.xml 的檔案,並將它放在目前的目錄中。
執行移轉命令
從 Windows [開始],以系統管理員身分執行 [命令提示字元]。
在 [系統管理員: 命令提示字元] 視窗中,輸入:
VssUpgrade Migrate settings.xml
使用您所建立之移轉設定檔的路徑和名稱取代 settings.xml。
[移轉] 命令會顯示您從 Visual SourceSafe 資料庫升級的每一個專案,以及 Team Foundation 版本控制伺服器上將用來升級資料的每一個目標資料夾。
出現提示時,輸入您的 Visual SourceSafe 資料庫的系統管理員密碼。 如果資料庫沒有密碼,請按 Enter。
系統會摘要說明其將如何執行升級程序,並要求您確認是否要執行。 例如:
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.txt 和 VSSUpgrade.log 中找到相關的詳細資料。
[移轉] 命令會產生一份報告,您可以用來取得 [移轉] 命令可能造成之問題和變更的詳細資料。 請參閱 從 Visual SourceSafe 升級後繼續執行後續步驟。
使用累加升級繼續此程序
如果升級程序因某個原因而中斷,您可以從之前結束程序的那一點,以累加升級方式繼續進行程序。 如果升級程序因為錯誤或網路問題而失敗,累加升級可能會很實用。 在累加升級期間,轉換器將只會升級未在先前工作階段中升級的資料。
若要開始累加升級,請遵循執行移轉命令中的步驟執行。 當 [移轉] 命令詢問您是否要執行累加移轉時,請按 Y。
累加升級的限制
只有當您遵守以下限制時,累加升級才會成功:
在您的 Visual SourceSafe 資料庫中,不可以有執行終結、清除、封存或還原的活動。
您不可以變更移轉設定檔的 <ProjectMap> 區段。
在您的 Team Foundation Server 上,不得修改移轉設定檔之 <ProjectMap> 區段中所指定的任何資料夾 (或是資料夾中的任何內容)。