簡體   English   中英

僅將部分TFS存儲庫遷移到Azure DevOps上的Git

[英]Migrate only part of TFS repository to Git on Azure DevOps

我是公司的新手,我的老板要我設置一個合適的Git存儲庫來替換現有的TFVC存儲庫。 我的公司在單個倉庫中為各種單獨的產品提供了數十種.NET解決方案,所有這些都在單獨的文件夾中。 這些解決方案位於包含整個倉庫的整個文件夾的子文件夾中(有3個分支標記為dev,main和master)。

我有兩個問題:

1)如何只將其中一個解決方案放入一個Git存儲庫,以便遷移到我們的新Azure DevOps分支? 在這種情況下我應該使用哪些工具? Azure DevOps本身還是git-tf或git tfs命令行的組合? 好的,這是一個3個問題。

2)TFS有三個分支:dev,main和master(它們是解決方案文件夾的父級)。 我如何讓這些分支中的一個被帶入Git(即我只是想讓Master帶過來)? 我必須包括所有分支嗎?

所以有2組問題,但實際上是5個問題。 我道歉,但這是一個棘手的情況。 先感謝您。

我寫這個是關於你的策略的假設:

下面的答案有一種味道,假設您想要傳播repo-per-sln方法。 “對於我們來說,將所有內容快速地放入一個git倉庫並在以后分開,或者逐個移動到git是否更好?” 這是一個真正的問題。 我只是參與了整個生豬的一次遷移的一部分,協調努力很重要,因為周五使用TFVC回家了,但周一使用Git進入。

我提起這件事是因為你提到了你的老板

希望[你]建立一個合適的Git存儲庫來替換現有的TFVC存儲庫

使用“合適的Git repo”(單數)可能會改變您對事物的需求方式,特別是在AzDO CI / CD前端。

轉到(我的版本)答案:

我如何只將其中一個解決方案放入一個Git存儲庫中

如果解決方案是真正獨立的,並且您沒有其他解決方案的依賴關系,那么創建一個目錄,其中包含您喜歡的repo名稱,並為其提供良好的復制 - 粘貼處理。 然后你可以在那里初始化一個git repo(不要忘記為VS項目包含一個好的.gitignore文件)並提交初始更改。 然后,您可以將AzDO項目倉庫設置為要推送到的遠程。

如果你是Git的新手,你可能想要在AzDO上初始化repo並在本地克隆,而不是手動將AzDO設置為你在本地創建的repo的遠程。 然后你仍然可以使用錘子(閱讀:復制/粘貼)將你的TFVC代碼放入你的新git倉庫。

如果解決方案與項目和程序集引用相互依賴,那么您需要在此處真正考慮策略。 在我最近的遷移中,我們選擇使用NuGet包來提供跨多個服務或產品共享的組件。 在這種情況下,您可能希望從共享代碼開始。 將這些東西放在自己的位置,並實施交付策略是一個很好的起點,可以讓您真正了解遷移將采取的措施。

在這種情況下我應該使用哪些工具?

對於像這樣的大多數事情,我傾向於使用Git Bash,但是“對每個人來說都是如此”。 正如@DanielMann所提到的,您的工具將根據您真正需要的歷史來定義。 到目前為止,我在所有的遷移中都支持他的觀點。 “讓過去成為過去。” 最新的遷移也選擇放棄了本地Team City構建配置,轉而使用SC >> CI >> CD的純AzDO實現。

2)TFS有三個分支:dev,main和master(它們是解決方案文件夾的父級)。 我如何讓這些分支中的一個被帶入Git(即我只是想讓Master帶過來)? 我必須包括所有分支嗎?

我要顛倒這兩個問題的順序:

我必須包括所有分支嗎?

TFVC跟蹤文件,因此每個分支都有自己的文件系統。

2)TFS有三個分支:dev,main和master(它們是解決方案文件夾的父級)。 我如何讓這些分支中的一個被帶入Git(即我只是想讓Master帶過來)?

再次,使用錘子。 您應該創建本地文件系統的新區域來表示存儲庫。 例如:我的repo容器是c:/src/然后我有代表每個repo c:src/r1/的目錄c:src/r1/ c:src/r2/ ect。 (注意:我的名字比示例中的更好)。 一旦你有了這個,從所需的TFVC分支獲取最新信息並錘掉。

可能頭痛

確保您可以讓其他開發人員停止對您要遷移的代碼進行更改。 如果您也正在設置AzDO CI / CD管道,您可能最終會對項目進行更改以使其正常工作。 如果開發人員仍然在改變您正在處理的源代碼,那么您將希望在TFVC中回顯您的更改,以便他們在上面編寫,否則當您嘗試將新更改重新添加到git中時,您將處於合並狀態。

第2點)使遷移更容易。

所以它應該沒有太多問題,使用類似於的命令:

git tfs clone https://tfs.codeplex.com:443/tfs/Collection $/project/trunk --branches=none

請參閱https://github.com/git-tfs/git-tfs/blob/master/doc/usecases/migrate_tfs_to_git.md#fetch-all-the-history-for-just-the-main-branch-ignoring-all -the-其他分支

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM