[英]git-svn: branch renamed in svn repository, how do I tell 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 rebase
或git 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並重建所有內容。 這很煩人,要花點時間!
我本人只是有這個錯誤。 只需刪除引用,就像這樣:
rm .git/refs/remotes/git-svn
那應該清除錯誤。
也許與文件系統的寫時復制功能(ext4 / btrfs / etc ...)有關?
我收到此錯誤:
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.