以前從未這樣做,所以我可能只是一個noob ...我試圖將我們陳舊的CVS存儲庫遷移到GitLab,我不知道如何來處理嵌套的CVS項目。我們有很多(即大約1600個項目文件通過CVS回購)。在兩個CVS存儲庫目錄中,大約有10年的提交,總計大約21GB。如何處理大量的嵌套CVS項目
通用結構是$ client/$ product,但其中大多數包含一堆子項目 - 通常很多。
我試過到目前爲止:
單片:試圖導入較小的CVS回購 - 用完了內存上通1周第一次(通過增加內存解決)和跑出的磁盤空間第二次通過5次(由於vmware數據存儲區幾乎已滿,不能真正添加磁盤 - 不要問!)。
由客戶端:cvs2git在一個客戶端上完成,然後運行git --fast-import,但我注意到所有的子項目。 Git不關心合併歷史,但我們的編碼人員會。仔細閱讀git子模塊,但不確定這是我需要的,因爲整個項目通常都在同一個CVS倉庫中,而且我看到它複製了克隆項目的過程。通過項目內部的客戶:使用(2)中的產品,通過查找,尋找.project文件,遞歸CVS回購深度優先;爲每個子目錄創建一個子目錄,並在使用git --fast-import導入子項目之前對每個子目錄執行git init --bare。這花了很長時間,因爲我相信它每次都會涉及整個cvs2git blob和轉儲文件,而且我不確定我是否擁有合適的git層次結構。
因此......我不想再陷入困境,我想我會問在這裏,因爲我確信有其他人一定需要做這種事情。任何指針不勝感激。
[編輯]:感謝所有的建議和幫助,人。現在它不在我們的手中 - 他們(開發人員)決定在他們工作時逐步將CVS項目遷移,因此大多數人可能永遠不會被移動。爲了這個目的,舊的cvs將作爲只讀引用保留,並且項目將被簽入git「pristine」,因此對於任何「BG」(在git之前)歷史,它們都會引用cvs,但是對於「AG」的歷史,他們會諮詢git。
至於深度嵌套項目的問題,我給出的解釋是它涉及Java類層次結構,每個項目等同於一個類。他們的構建過程中有一些東西會自動將cvs項目轉換爲java .jar文件或類似的東西。那裏有很多java。
我不知道這個建議是否適用,但過去建議首先轉換爲SVN,然後轉換爲Git。這是因爲cvs2svn和svn2git比cvs2git更好開發。 – Schwern
官方的cvs2git文件說,只是直接與cvs2git。我不確定在服務器上是否有空間存儲3個存儲庫 - 我只有2 ;-)有足夠的空間問題 – andydj
tigris cvs2git是cvs2svn項目的一種分支,相當於一種alomost-cvs-2-svn,然後快速導入到git中。 – Mort