將存放庫從 TFVC 匯入並移轉至 Git
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
您可以將程式代碼從現有的 TFVC 存放庫移轉至相同組織內的新 Git 存放庫。 移轉至 Git 是大型 TFVC 存放庫和小組的參與程式。 集中式版本控制系統,例如TFVC,在基本方面的行為與 Git 不同。 切換牽涉到比學習新的命令還多。 這是一項干擾性變更,需要仔細規劃。 您需要思考:
- 修訂工具和程式
- 拿掉二進位檔和可執行檔
- 訓練您的小組
強烈建議先閱讀集中式版本控制至 Git,並在開始移轉之前,先從 TFVC 移轉至 Git 一節。
匯入體驗非常適合小型簡單的 TFVC 存放庫。 這也適用於已「清除」的存放庫,如將集中式版本控制至 Git 中所述,以及下列從 TFVC 移轉至 Git 一節中所述。 這些區段也建議其他工具,以取得更進階的 TFVC 存放庫組態。
重要
由於 TFVC 和 Git 市集版本控制歷程記錄的差異,我們建議您不要移轉歷程記錄。 這是將 Windows 和其他產品從集中式版本控制移轉至 Git 時,Microsoft採用的方法。
匯入存放庫
選取 [存放庫]、[檔案]。
從存放庫下拉式清單中,選取 [ 匯入存放庫]。
從 [ 來源類型 ] 下拉式清單中選取 TFVC
輸入您要匯入至 Git 存放庫之存放庫/分支/資料夾的路徑。 例如,
$/Fabrikam/FabrikamWebsite
如果您想要從 TFVC 存放庫移轉歷程記錄,請按下 [移轉歷程記錄 ],然後選取天數。 您可以從最近的變更集開始,移轉最多 180 天的歷程記錄。 TFVC 存放庫的連結會在遷移至 Git 的第 1 個變更集認可訊息中新增。 這可讓您在需要時輕鬆地尋找較舊的歷程記錄。
為新的 Git 存放庫命名,然後按兩下 [ 匯入]。 視匯入的大小而定,您的 Git 存放庫會在幾分鐘內準備就緒。
疑難排解
此體驗已針對已準備進行移轉的小型、簡單 TFVC 存放庫或存放庫進行優化。 這表示它有一些限制。
- 它只會移轉根目錄或分支的內容。 例如,如果您有一個 TFVC 專案
$/Fabrikam
,其下有 1 個分支和 1 個資料夾,則匯$/Fabrikam
入的路徑會匯入資料夾,而$/Fabrikam/<branch>
只會匯入分支。 - 匯入的存放庫和相關聯的歷程記錄(如果匯入)大小不能超過 1 GB。
- 您最多可以匯入 180 天的歷程記錄。
如果上述任一項是匯入的封鎖程式,建議您嘗試使用 Git-TFS 之類的外部工具來匯入及讀取我們的白皮書 - 集中式版本控制至 Git,以及下列從 TFVC 移轉至 Git 一節。
重要
使用 Git-TFS 之類的外部工具與Microsoft產品、服務或平臺完全是用戶的責任。 Microsoft不支援、支援或保證這類第三方擴充功能的功能、可靠性或安全性。
從 TFVC 移轉至 Git
將原始程式碼從集中式版本控制系統移轉至 Git 之前,請先了解這兩者之間的差異,並 [準備進行移轉]。
需求
為了簡化移轉,在遵循 本文上一節的匯入存放庫 程式之前,有幾個需求。
- 只移轉單一分支。 規劃移轉時,請選擇 Git 的新分支策略。 只移轉主要分支支援主題分支型工作流程,例如 GitFlow 或 GitHub Flow。
- 執行小費移轉,如同在 中,只匯入最新版本的原始程式碼。 如果 TFVC 歷程記錄很簡單,您可以選擇移轉一些歷程記錄,最多 180 天,讓小組只能從 Git 中運作。 如需詳細資訊,請參閱 規劃移轉至 Git。
- 從存放庫排除影像、科學數據集或遊戲模型等二進位資產。 這些資產應該使用 Git LFS(大型檔案記憶體)延伸模組,匯入工具未設定。
- 將匯入的存放庫的大小保持在 1 GB 以下。
如果存放庫不符合這些需求,請改用 Git-TFS 工具來 執行移轉。
重要
使用 Git-TFS 之類的外部工具與Microsoft產品、服務或平臺完全是用戶的責任。 Microsoft不支援、支援或保證這類第三方擴充功能的功能、可靠性或安全性。
遷移步驟
從 TFVC 移轉的程式通常很簡單:
- 請從本機磁碟上的 TFVC 查看最新版 的分支。
- 從存放庫移除二進位檔和建置工具 ,並設定 NuGet 等套件管理系統。
- 轉換版本控制特定的組態 指示詞。 例如,將檔案
.gitignore
轉換成.tfignore
,並將檔案.gitattributes
轉換成.tpattributes
。 - 簽入變更並執行 移轉至 Git。
步驟 1-3 是選擇性的。 如果存放庫中沒有二進位檔,而且不需要設定 .gitignore
或 .gitattributes
,您可以直接前往 簽入變更並執行移 轉步驟。
查看最新版本
建立新的 TFS 工作區,並對應要移轉至 Git 之伺服器目錄的工作資料夾。 這不需要完整的工作資料夾對應。 只有包含二進位檔的對應資料夾,才能從存放庫移除,以及包含版本控制系統特定組態檔的資料夾,例如 .tfignore
。
設定對應之後,請在本機取得資料夾:
tf get /version:T /recursive
拿掉二進位檔和建置工具
由於 Git 藉由將歷程記錄中的每個檔案複本提供給每個開發人員來儲存已變更檔案的方式,因此直接將二進位檔簽入存放庫會導致存放庫快速成長,並可能導致效能問題。
針對連結庫之類的建置工具和相依性,請採用 具有版本控制支援的封裝解決方案 ,例如 NuGet。 NuGet 資源庫已有許多 開放原始碼 工具和連結庫可供使用,但對於專屬相依性,請建立新的 NuGet 套件。
一旦將相依性移至 NuGet,請確定它們不會包含在 Git 存放庫中,方法是將它們新增至 .gitignore
。
轉換版本控制特定組態
Team Foundation 版本控制 提供檔案.tfignore
,可確保不會將特定檔案新增至 TFVC 存放庫。 您可以將 .tfignore
檔案用於自動產生的檔案,例如建置輸出,使其不會意外存入。
如果項目依賴此行為,請將 .tfignore
檔案 .gitignore
轉換成檔案。
跨平臺 TFVC 用戶端也支援 .tpattributes
可控制檔案放在本機磁碟上或簽入存放庫的方式的檔案。 如果檔案 .tpattributes
正在使用中,請將它 .gitattributes
轉換成檔案。
簽入變更並執行移轉
簽入任何移除二進位檔、遷移至套件管理,或轉換版本控制特定組態的變更。 在 TFVC 中進行此最終變更之後,您就可以進行匯入。
請遵循匯 入存放庫 程式來執行匯入。
進階移轉
Git-TFS 工具是 Team Foundation 版本控制 與 Git 之間的雙向網橋,您可以使用它來執行移轉。 Git-TFS 適用於具有完整歷程記錄的移轉,超過匯入工具支援的 180 天。 或者,您可以使用 Git-TFS 嘗試移轉,其中包含多個分支和合併關聯性。
嘗試使用 Git-TFS 進行移轉之前,請注意 TFVC 和 Git 存放區歷程記錄之間有基本差異:
- Git 會將歷程記錄儲存為存放庫的快照集,而 TFVC 則會記錄檔案上發生的離散作業。 TFVC 中的變更類型,例如重新命名、取消刪除和復原,無法在 Git 中表示。 與其看到該檔案
A
已重新命名為檔案B
,而是只會追蹤已刪除該檔案A
,並在相同的認可中新增檔案B
。 - Git 沒有 TFVC 標籤的直接類比。 卷標可以包含任何特定版本的任意數目檔案,而且可以反映不同版本的檔案。 雖然在概念上類似,但 Git 卷標會指向某個時間點的整個存放庫快照集。 如果項目依賴 TFVC 標籤來知道傳遞的內容,Git 標籤可能不會提供這項資訊。
- TFVC 中的合併發生在檔案層級,而不是整個存放庫。 只有變更的檔案子集可以從一個分支合併到另一個分支。 後續的變更集中可能會合併剩餘的已變更檔案。 在 Git 中,合併會影響整個存放庫,而且這兩組個別變更都無法視為合併。
由於這些差異,建議您進行小費移轉,並讓 TFVC 存放庫保持在線,但只讀,才能檢視歷程記錄。
若要嘗試使用 Git-TFS 進行進階移轉,請參閱複製具有歷程記錄的單一分支,或複製具有合併歷程記錄的所有分支。
重要
使用 Git-TFS 之類的外部工具與Microsoft產品、服務或平臺完全是用戶的責任。 Microsoft不支援、支援或保證這類第三方擴充功能的功能、可靠性或安全性。
更新工作流程
從集中式版本控制系統移至 Git 不僅僅是移轉程式代碼。 小組需要訓練,以瞭解 Git 與現有版本控制系統有何不同,以及這些差異如何影響日常工作。
深入瞭解如何 從集中式版本控制移轉至 Git。