2009-11-24 78 views
2

我試圖導入一個CVS模塊到現有的git倉庫中。如果我導入新鮮的repo,我可以正常工作,但是當我嘗試導入現有的repo時,似乎決定跳過所有在最後一次提交到我指定的分支之前提交的補丁集 - O操作。這是我目前想:如何讓git cvsimport避免跳過補丁集?

git cvsimport -v -p -x -o cvs -d <cvsroot> -k -u <module> 

輸出的結束由行的是這樣的:

skip patchset 26: 1258578534 before 1259081502 

如果我把「-o CVS」,它失敗:

Branch 'origin' does not exist. 
Either use the correct '-o branch' option, 
or import to a new repository. 

那麼,我怎樣才能讓git cvsimport導入的一切

+0

我不確定你想達到什麼目的 - 你希望CVS的新提交可以在分支中的git之後進行,或者修改現有的提交嗎? – 2009-11-24 17:51:17

回答

2

導入到一個新的存儲庫中,將新的分支複製到當前的存儲庫中,然後重新編寫分支以在你已有的分支之後坐下,如果這就是你要做的。

或者,如果你想通過一次轉換模塊複製一個多模塊的CVS籤,你可能想嘗試給它的所有轉換一次......

它可能工作轉換每個模塊進行混帳,將每個分支拉入一個存儲庫,然後創建一個提交,將每個分支頭作爲父項,將每個模塊放在樹中的正確位置。這在單個模塊的歷史記錄中不能很好地保持併發性。

+0

CVS存儲庫包含非常多的模塊,但實際上我只是試圖轉換一些模塊。因此,在這種情況下,一次完成這一切似乎不是一個好主意。 我目前正在試驗你的第三個建議,它似乎正在做我想做的事。謝謝! – Zack 2009-11-24 19:00:43

2

訣竅很簡單:

  • 創建一個新的git倉庫自己(不要讓cvsimport這樣做)
  • 提交初始提交
  • 設置初始日期提交歸途中過去

因此:

 
$ mkdir my_repo 
$ cd my_repo 
$ git init 
$ touch test 
$ git add test 
$ git commit -m "Initial commit" --date="1990-01-01 00:00:00" 

現在運行git cvsimport並將-C標誌指向您的git存儲庫文件夾。 git cvsimport會跳過分支頭部之前的時間戳補丁(請參閱-o標誌)。

+0

我有一個類似的問題(巨大的CVS回購;只需要幾個模塊)和cvsimport失敗。我嘗試了上面的commit --date技巧,但cvsimport仍然失敗,因爲「Branch'origin'不存在。」 git log只顯示一個項目,提交bb7778de12614b1c844a4d124884c3b745f80519 作者:... Date:Tue Jan 1 00:00:00 1980 -0500 – djb 2011-06-10 14:48:37