簡體   English   中英

使用git-tfs工具將TFS遷移到GIT不會遷移所有分支和分支的某些更改

[英]Migration of TFS to GIT using git-tfs tool not migrating all the branches and some changes of branches

我正在嘗試使用git-tfs工具將TFS遷移到具有歷史記錄的所有分支的GIT。 但是,我僅成功獲得了很少的分支機構,而缺少歷史的分支機構(最近一次)。 而且幾乎沒有分支機構遷移。 我已使用以下命令進行遷移:

git tfs clone <tfsurl> <trunk> --branches=All --debug

我收到了調試日志中分支和變更集的以下錯誤:

Looking for changeset 78197 in git repository: CacheIsFull, stopped looking.
error: an error occurs when initializing the branch. Branch is ignored and continuing...

我也在相關的帖子中查找了類似的問題,但是沒有一個提供解決方案。 例如: https : //github.com/git-tfs/git-tfs/issues/461

我期望將所有分支和歷史記錄從TFS遷移到GIT存儲庫。

這不是由第三方團隊處理的官方工具。 並根據他們的描述

由於我們不再是TFS的用戶,因此不再積極維護該項目。 因此,git-tfs非常有用,它不能免除不受支持的用例。 如果您遇到任何缺失或問題,請做出貢獻,我們將很高興為您提供幫助。

請記住:

解決問題的最快方法是提交可解決問題的PR。

修復此問題的最慢方法是希望其他人將其修復。

在嘗試使用Git-TFS進行遷移之前,應注意TFVC和Git存儲歷史記錄的方式之間存在根本差異:

  • Git及時將歷史記錄存儲為存儲庫的快照,而TFVC記錄文件中發生的離散操作。 更改
    無法表示TFVC中的類型,例如重命名,取消刪除和回滾
    在Git中; 而不是看到文件A被重命名為文件B,您可能
    只看到文件A被刪除,文件B被添加到同一文件中
    承諾。
  • Git沒有TFVC標簽的直接類似物:標簽可以包含任何特定版本的任何數量的文件,並且可以反映不同版本的文件。 盡管從概念上講,Git標簽在某個時間點指向整個存儲庫的快照。 如果您依靠TFVC標簽來了解交付了什么,則可能不會提供Git標簽。
  • TFVC中的合並發生在文件級別,而不是整個存儲庫。 您只能將更改文件的一個子集從一個分支合並到另一個分支,然后將剩余的更改文件合並到后續的更改集中。 在Git中,合並會影響整個存儲庫,您無法將兩組單獨的更改都視為合並。

源鏈接

由於存在這些差異, 我們通常建議用戶進行提示遷移,並使其TFVC存儲庫保持聯機狀態,但只讀以查看歷史記錄。

這是Microsoft將Windows和其他產品從集中版本控制遷移到Git時采用的方法。

對於技巧遷移,只需使用官方的TFVC導入工具

如果您堅持使用git-tfs,我也會遇到一些類似的問題,其中有多個根本原因,例如某些分支已被重命名(刪除並創建了一個新分支),無限循環拉特定分支,死分支,長克隆和以此類推。

似乎有幾種方法和解決方法。 您可能需要深入研究它們,並根據自己的情況找到正確的方法。

暫無
暫無

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

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