2010-07-19 207 views
14

我最近在倉庫中有一個損壞的對象,指向我的HEAD(對象爲空)。它在中斷git-svn命令後發生。然後,我通過手動更改此對象的引用來恢復我的存儲庫。嘗試修復損壞的文件後git-svn fetch/rebase失敗

現在,我想我與SVN git倉庫同步,​​但混帳SVN獲取回報:

fatal: Invalid revision range 5a5dc92cd3083960fb4828ae387a32cda0554fa8..refs/remotes/a-branch 
rev-list --pretty=raw --no-color --reverse 5a5dc92cd3083960fb4828ae387a32cda0554fa8..refs/remotes/a-branch --: command returned error: 128 

5a5dc92cd3083960fb4828ae387a32cda0554fa8指的是已損壞的對象,我想說的git - svn的不考慮這個對象,但另一個,但我不知道如何破解這個。

如果有人知道git-svn在哪裏/如何在內部存儲這個值,那就太好了。

謝謝

回答

17

,如果你擁有svn存儲在您提交的信息(這些http://svn.…./svn/[email protected] (<id>))元數據,可以從.git/svn/…目錄中刪除.rev_map.<id>文件。

git-svn將在運行下一個命令之前重新創建它們。

編輯: 當運行git gc,如果你看到的線沿線的輸出:

$ git gc 
warning: reflog of 'HEAD' references pruned commits 
warning: reflog of 'refs/heads/master' references pruned commits 
warning: reflog of 'refs/remotes/trunk' references pruned commits 

然後,你知道你需要執行上述伎倆。在這種情況下:

rm .git/svn/refs/remotes/trunk/.rev_map.* 
+0

我已經編輯了答案,更清楚地表明在rev_map的來自於先前的參考,因爲我制定了從網絡上的另一個參考需要的是什麼。 – 2011-05-20 15:10:30