15

アップストリームの svn リポジトリから最新の新しいブランチを取得するために get svn fetch を実行すると、次のエラーが発生しました。

$ git svn fetch
fatal: failed to unpack tree object 5ecb324e8b8fcb918acb253f33edc6ce49e49e0d
read-tree 5ecb324e8b8fcb918acb253f33edc6ce49e49e0d: command returned error: 128

そのローカルリポジトリで git svn を試みるたびに、同じエラーが発生します。もともと私は git バージョン 1.5.6.4_0 を実行していましたが、エラーの後、1.6.0.2_2 に更新しようとしましたが、問題は解決しません。

この破損をクリーンアップする方法はありますか? アップストリーム リポジトリの新しい git svn クローンは問題ありませんが、既存のセットアップを保持したいと考えています。私はドキュメントに目を通し、運がない問題をグーグルで調べました。

4

3 に答える 3

5

私も同じ問題を抱えていました。git-svn が何らかの方法で読み取ったり処理したりできない特定の SVN リビジョンが原因です。これが私が順番に試したことです:

  1. 動作することがわかっているリビジョンに巻き戻します。git svn reset -r 42
  2. フェッチを再試行します: git svn fetch— 42 から開始して問題のあるバージョン (たとえば 50) までの各リビジョンをフェッチし、同じエラー メッセージを表示します。
  3. 親を取得する: git svn fetch --parent— 理由は聞かないでください。これにより、より多くのリビジョンが取得されます。それが関連しているかどうかはわかりません。
  4. フェッチを再試行します: git svn fetch— それでも機能しません。
  5. 次の各リビジョンを取得します。
    1. git svn fetch -r 50— 動作します。
    2. git svn fetch -r 51— エラー メッセージが表示されない間は、続行します。
    3. git svn fetch -r xx— エラー メッセージが表示されます。これはリビジョンが正しくありません。気にしないでください。
    4. git svn fetch -r xx+1— 動作します。
  6. フェッチを再試行してください: git svn fetch— うまくいきました! より多くのリビジョンを取得し始めます。

プロセスは(おそらく最初のステップの近くで)クリーンアップする必要がありますが、新しいクローンでやり直す必要なく、うまくいきました。

于 2010-12-21T22:32:55.447 に答える
4

この原因として最も可能性が高いのは、(ツリーが参照する) ファイルまたはコミットが破損しているか見つからないことです。または、ツリー自体が破損している可能性があります。確認する:

git fsck --unreachable HEAD $(cat .git/refs/heads/*)

これにより、気にしない一連の「ぶら下がっている」ファイルが表示されます。破損したファイルは、「Invalid SHA1」などを報告します。不足しているファイルがどのように報告されるかわかりません。破損したアイテムを削除rsyncし、アップストリーム リポジトリからそれらを置き換えます。

于 2008-12-05T19:18:22.333 に答える
4

新しい SVN ブランチを作成した後、同じエラー メッセージが表示されました。完全な「.git/svn」ディレクトリを削除し、SVN から再度フェッチすることで問題を解決できました。

$ rm -rf .git/svn
$ git svn fetch
Rebuilding .git/svn/refs/remotes/trunk/.rev_map.1d5df120-ff1b-4f4f-af56-171ecbcc785d ...

これにより、SVN からすべてのコミットが再度フェッチされ、エラーが解決されました。

于 2012-06-05T08:50:45.717 に答える