2016-01-14 287 views
2

在過去24小時內,我一直在努力滿足以下要求。將TFS 2013遷移到Git

由於我們的開發團隊使用TFS(當前版本2013)很長一段時間,我們決定遷移所有項目與git。

但不幸的是,這看起來並不那麼容易。首先,我試着混帳TFS,但每次我試圖克隆的集合,它說:

Access to path 'x' denied. 

在相反,列出所有分支的平穩運行。

因此,我試圖通過嘗試將TFS存儲庫轉換爲TFS Git存儲庫,這將允許我克隆它並將其推送到我們的BitBucket存儲庫。不幸的是,我找不到如何將TFS存儲庫轉換爲TFS Git存儲庫 - 只找到瞭如何創建現有的存儲庫。

最後但並非最不重要的,我甚至試過用git TF - 但每次我想訪問我的回購協議時,它說:「Java的.... Main.class」找不到。

任何提示和技巧上如何成功地從TFS遷移到Git?

在此先感謝!

回答

1

TFVC和Git是完全不同的版本控制模型(見https://en.wikipedia.org/wiki/Version_control以獲取更多信息):這就像從文件&目錄移動數據到關係數據庫管理系統或電動汽車比較內燃機。

我的建議是回到基礎並明確說明要求。 :

  • 我需要遷移我所有的源代碼嗎?
  • 我需要遷移歷史嗎?
  • 我需要所有分支嗎?

我的建議是把重點放在你真正需要的,去這通常是最快和最廉價的解決方案:

  1. 遷移到新系統只有源我需要的文件,擺脫舊的未使用東西(稱之爲車庫清洗)
  2. 鎖定下來的舊系統,只讀
  3. 至少要花分支機構的快照,並將其提交到新的系統(無需專用工具)
  4. 不遷移之前主要版本,明智地選擇了片刻,以便球隊有時間來學習新技術,使用新系統修復問題
  5. 開始,離開老作爲參考

第2項可以通過刪除權限,每個人都可以實現管理員除外。我對第3步的想法是:克隆空的repo,在單獨的TFVC工作區中獲取最新的主分支,將文件同步到Git倉庫(例如robocopy /MIR /XD .git),提交,推送,創建和切換Git到分支X,獲取最新的TFVC分支X ,同步等。對所有想要遷移的分支重複。

也考慮一些未成年人重構代碼庫佈局並拆分成單獨的Git子樹或甚至子模塊。

+0

我完全同意大部分建議。最後,我簡單地決定採用這個解決方案,即遷移代碼庫,同時TFVC可以作爲參考,以防需要檢查任何工作項目。感謝您的建議 – dsafa

4

不幸的是,我無法找到如何將TFS庫轉換爲TFS Git倉庫

只是因爲沒有辦法做到這一點!由於git和TFVC的特殊性,這是一項非常困難的任務,所以微軟從來沒有嘗試過這麼做!

從某種意義上說,這就是工具git-tfs和git-tf試圖解決很多困難的原因,主要原因是TFVC如何管理和存儲分支數據到存儲庫中(太可怕了!)。

你唯一的希望是在這2個工具之一。

不幸的是,混帳TF不再是因爲2年支持和不支持的分支:-(

的git-TFS嘗試做了很多更好的工作,但有些分行模式仍然引起:-( 大問題在這種不得已的情況下,沒有分支支持克隆是你最後的解決方案......

關於如何做到這一點 https://github.com/git-tfs/git-tfs/blob/master/doc/usecases/working_with_no_branches.md#clone-just-the-trunk

隨意閱讀的git-TFS GitHub的網站更多的DOC文檔的一些。

訪問路徑'x'被拒絕。

你確定它是不是隻是一些權利的機會問題?因爲我從來沒有聽說過這樣的問題...

ps:微軟看到從TFVC遷移到git的方式是更新到tfs 2015更新2並創建一個git存儲庫到與現有的TFVC相同的項目中項目並將源代碼複製到git存儲庫。 TFVC保持歷史......如果需要的話。