我們公司已經決定從ClearCase的遷移我們的源代碼與git,這是偉大的:-)創建git的歷史,blob和樹對象,並行
我知道,ClearCase和git的是完全地不同的源代碼管理系統。 但是我們的開發者只會有一個包含完整歷史的SCM。
我collegue發現下面的工具,我們的進口ClearCase的歷史到混帳:https://github.com/charleso/git-cc
不幸的是我們的代碼有超過46000個的源代碼文件和歷史進口超過10年。
我分析了這個工具,在我看來有兩個瓶頸。 第一個是從clearcae服務器導入文件。這很容易通過多線程來解決。 第二個是git-cc本身的工作流程。
- 通過cleartool lshistory獲取主分支的歷史
- 創建文件和他們組的變更,以COMIT的
- 獲得來自呼叫控制服務器文件(S)的指定版本,並複製到工作目錄
- 混帳添加。
- git的承諾
- 挑選下一組和3再次啓動
我想我可以通過使用低級別的git命令,並使用多線程改善。
每個comit-group查詢它從服務器的變化並在git數據庫中創建一個blob對象,因此它可以運行多個線程中的多個組。 另外我有一個線程,從剛剛創建的blob對象創建git中的歷史記錄。
我的問題是現在,這對你有意義嗎?或者你認爲我是naiv?
我忘記了任何git鎖定機制嗎?
您有任何其他想法?
通常爲了導入你使用[git-fast-import](https://git-scm.com/docs/git-fast-import)。我不知道它是否利用多個CPU(可能不是,因爲它將所有數據作爲單個二進制流),但至少它不會執行任何額外的IO。 – max630
@ max630 嗨max630,謝謝你的回覆。這是避免任何額外I/O的好處。我會評估它。 – jungnick