30

git svn rebaseを実行すると、ある時点で停止し、次のように表示されます。

Index mismatch: SHA key of a tree != SHA key of another tree.(これらのSHAキーはツリーに対応し、上記の2つの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の内部動作にあまり経験がないので、これらのような問題を分析し、おそらくそれらを解決するために従うべき一連のステップはありますか?

4

10 に答える 10

39

これを修正するために.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心ゆくまで。

于 2013-01-10T17:32:44.120 に答える
38

このエラーは2回発生しましたが、どちらの場合も.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リポジトリのミラーが再び機能するようになるはずです。

于 2011-01-10T12:48:35.450 に答える
13

gitクライアントを更新し、以下を使用して最後のsvnコミットを再フェッチします。

git svn reset -r 12345
git svn rebase

ここで、12345は既存のsvnリビジョンです。

于 2013-12-09T17:26:08.620 に答える
4

authors私の場合、この問題は、git-svnが使用するように構成された私のファイルにない新しい/不明なsvn作成者が原因で発生しました。最初の数回の読み取りを無視したことが出力で報告されました。

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

そのため、不足している名前と、それを追加するファイル(組織のユーザーレジストリから電子メールを取得しました)がわかり、順調に航海できました。

于 2014-12-17T18:36:02.173 に答える
1

問題は、この場合、これを体系的に実行する必要があることです。

  • git+svnを使用する
  • git-svnを使用してsvnにブランチを作成します
  • svnツールを使用してブランチをトランクにマージします
  • svnブランチを削除します
  • git-svnリベースを実行します

何かが足りない、すべてがクラッシュする。私が回復することを知っている唯一の方法は、.gitのすべてのsvnを削除し、すべてを再構築することです。それはただ迷惑で、しばらく時間がかかります!

于 2011-01-13T10:16:26.607 に答える
0

私は自分でこのエラーが発生しました。次のように、参照を削除するだけです。

rm .git/refs/remotes/git-svn

これでエラーが解消されるはずです。

于 2010-11-05T20:20:34.487 に答える
0

たぶん、ファイルシステムのコピーオンライト機能(ext4 / btrfs / etc ...)と関係がありますか?

参照:https ://stackoverflow.com/a/42299634/7491491

于 2017-02-17T14:46:33.167 に答える
0

このエラーが発生しました:

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再び正常に動作しました。

于 2017-05-17T08:54:04.730 に答える
0

最初のクローン作成中にこれに遭遇しました。誰かがトランクと呼ばれるブランチを作成し、実際のトランクと競合していることが判明しました。/ branchs/trunkを無視した後はすべて機能しました

于 2018-07-13T02:44:21.950 に答える
0

おそらく、メッセージに同時にチェックサムの不一致がある可能性があります。

ここで解決策を見つけましたGitsvnrebase:チェックサムの不一致

git svn log <item with checksum mismatch>
git svn reset -r<top history revision in the log> -p
git svn rebase
于 2019-08-15T08:25:34.070 に答える