2016-02-26 102 views
1

在工作中,我們有一個CVS存儲庫,其提交已延伸了近15年。幾年前,該存儲庫已轉換爲git並上傳到公共GitHub存儲庫。但是,git存儲庫剛剛使用當前版本的文件進行初始化,沒有導入歷史記錄(不是我所做的)。 CVS的歷史很簡單直線 - 我們從未使用CVS分支。它不是一個高度活躍的存儲庫:自創建以來,公共git存儲庫只有大約25次提交。只將歷史記錄從CVS存儲庫導入到已創建的git存儲庫中

我希望能夠將CVS歷史記錄導入到現有的git存儲庫中,而無需創建新的存儲庫。根據我在git-cvsimportcvs2git的文檔中閱讀的內容,這些工具總是會創建新的存儲庫。或者,我可以做一個新的cvs/git轉換,並上傳新的存儲庫來代替當前的存儲庫,並應用25個cvs後提交。這是可能的,如果是這樣,推薦的方法是什麼?我已經讀取了&對CVS和git存儲庫的寫入訪問權限,並且在必要時可以訪問CVS服務器。

我對於簡單的git分支,合併和重新綁定感到相當舒服,但我不會說我是專家(我會參考Pro Git書籍)。

回答

0

我認爲解決方案是從主分支中的第一次提交創建臨時分支(「開始」),然後從CSV生成和導入歷史記錄到另一個臨時分支(「導入」),與我們的戰略合併「開始」分支和從「主」分支合併更新提交併將「導入」分支重命名爲「主」:

# create new git repository by running cvs2git in import-git-path 
# change directory to your current repository 
git log 
# find the first commit 
git checkout -b start "first-commit" 
git checkout --orphan branch 
rm -rf * .gitignore # or any other file 
git add -A 
git remote add import-repo import-git-path 
git pull import-repo master 
git merge -s ours start 
git merge master 
git branch -D start 
git branch -D master 
git branch -m import master 
+0

感謝您的迴應!而不是'git branch import --orphan'我使用了'git checkout --orphan import'。在那之後,'git status'告訴我每個文件都是「新的」,所以看起來是正確的。當我嘗試執行'git pull import-repo master'時,它看起來像抓取行,但合併不:我得到:'錯誤:條目'文件名'將被合併覆蓋。無法合併.'在刪除並重新克隆當前存儲庫並重復之後,我得到一個不同的'文件名',所以我認爲這個特定文件沒有什麼特別之處。我需要強制合併嗎? – Derek

+0

對於孤兒的錯誤感到抱歉。你是否按照步驟'rm -rf * .gitignore#或任何其他文件',即I.e.清潔工作目錄? –

+0

不用擔心,是的。 'git status'顯示'新文件:filenameA,新文件:filenameB'等等,並且'沒有爲commit提交更改','刪除:filenameA,刪除:filenameB'等,顯示'要更改提交'除了./.git文件夾以外,它是完全空的。我想知道這應該是'git rm -rf'而不是? – Derek

相關問題