簡體   English   中英

如何解決git-svn索引不匹配的問題?

[英]How do I resolve a git-svn index mismatch?

當我執行git svn rebase時,它停下來說:

Index mismatch: SHA key of a tree != SHA key of another tree. (我知道這些SHA鍵對應於一棵樹,而不是上面兩個sha鍵的git show中的提交。)

re-reading <sha index of a commit in svn/trunk>
... list of files ...
fatal: bad object <SHA1 index of the bad object>
rev-list -1 <SHA1 index of the bad object> --not <SHA1 index of the revision it was trying to re-read>: command returned error: 128

我對git的內部工作經驗不是很豐富,因此是否要遵循一系列步驟來剖析此類問題並可能解決它們?

請不要刪除.git / svn文件夾來解決此問題。 它需要您重建所有內容,這很煩人,需要一段時間(對於我的存儲庫來說,需要幾個小時的時間),而且不是必需的。

我在這里找到了正確的答案並將其包含在下面。

從鏈接:

在.git目錄中,運行以下命令:

$ find . -exec grep -Hin 5b32d4ac2e03a566830f30a702523c68dbdf715b {} \;
Binary file ./svn/.caches/lookup_svn_merge.db matches
Binary file ./svn/.caches/check_cherry_pick.db matches

現在,從第一個命令的輸出中刪除匹配的.svn / .caches

$ rm ./svn/.caches/lookup_svn_merge.db
$ rm ./svn/.caches/check_cherry_pick.db

現在git svn rebasegit svn fetch到您的心臟內容。

我兩次遇到此錯誤,兩次都通過刪除.git文件夾內的svn文件夾解決了該錯誤。

rm -r .git/svn

然后使用以下命令重建svn元數據:

git svn fetch

您可能會看到以下消息:

Migrating from a git-svn v1 layout...
Data from a previous version of git-svn exists, but
    .git/svn
    (required for this version (1.7.0.4) of git-svn) does not exist.
Done migrating from a git-svn v1 layout

一段時間后(尤其是在大型存儲庫上,重建可能需要一段時間),您應該再次獲得svn存儲庫的工作鏡像。

使用以下命令更新git client並重新獲取最近的svn提交:

git svn reset -r 12345
git svn rebase

其中12345是現有的svn修訂版。

在我的情況下,此問題是由新的/未知的svn作者引起的,該作者不在git-svn配置為使用的我的authors文件中。 它在輸出中報告了我忽略了前幾​​讀的內容:

Index mismatch: <leftsha1> != <rightsha1>
rereading <anothersha1>
        ... list of files ...
Author: <name> not defined in /path/to/authors file

這樣就給了我一個我所缺少的名稱,以及要添加的文件名(我從組織用戶注冊表中提取了電子郵件),並且運行順利。

問題在於,在這種情況下,您必須系統地執行此操作:

  • 使用git + svn
  • 使用git-svn在svn上創建分支
  • 使用SVN工具將分支合並到主干
  • 刪除svn分支
  • 做一個git-svn rebase

缺少某些東西,一切崩潰。 我知道要恢復的唯一方法是刪除.git中的所有svn並重建所有內容。 這很煩人,要花點時間!

我本人只是有這個錯誤。 只需刪除引用,就像這樣:

rm .git/refs/remotes/git-svn

那應該清除錯誤。

也許與文件系統的寫時復制功能(ext4 / btrfs / etc ...)有關?

參見: https : //stackoverflow.com/a/42299634/7491491

我收到此錯誤:

Index mismatch: <sha> != <sha> re-reading <sha index of a commit in svn/trunk> ... list of files ... <path> was not found in commit <sha> (r<svn rev>)

在SVN存儲庫中查看報告路徑的歷史記錄時,我發現已在其中添加文件的SVN修訂版。 但是在Git中查看為該修訂版本創建的提交,我發現它不包含任何文件!

我認為這是由於磁盤已滿引起的。 在執行git svn reset -r返回損壞的Git提交的修訂版之后, git svn fetch再次正常工作。

在最初的克隆過程中,我遇到了這個問題,結果發現有人創建了一個名為“ trunk”的分支,該分支與實際的trunk相沖突。 忽略/ branches / trunk后,一切正常

您的郵件中可能同時存在校驗和不匹配的情況:

我在這里找到解決方案Git svn rebase:校驗和不匹配

git svn log <item with checksum mismatch>
git svn reset -r<top history revision in the log> -p
git svn rebase

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM