Неустранимая ошибка при распаковке объекта дерева во время git svn fetch - PullRequest
15 голосов
/ 03 декабря 2008

При запуске get svn fetch для извлечения последних новых веток из верхнего хранилища svn, я получил эту ошибку:

$ 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 клон вышестоящего репозитория - это хорошо, но я бы хотел сохранить мои существующие настройки. Я просмотрел документы и погуглил проблему без удачи.

Ответы [ 3 ]

5 голосов
/ 22 декабря 2010

У меня была такая же проблема. Это связано с определенной версией SVN, которую git-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 - Работает! Начинает получать больше ревизий.

Процесс должен быть очищен (вероятно, в первые шаги), но он работал для меня, без необходимости начинать заново со свежим клоном.

3 голосов
/ 05 июня 2012

Я столкнулся с тем же сообщением об ошибке после создания новой ветки 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 и исправило ошибку.

3 голосов
/ 05 декабря 2008

Наиболее вероятная причина этого - файл или коммит (на который ссылается дерево) поврежден или отсутствует. Или само дерево может быть повреждено. Проверить с помощью:

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

Это покажет кучу "висящих" файлов, которые вас не интересуют; Поврежденные файлы сообщат о «неверном SHA1» или о чем-то подобном. Я не знаю, как сообщать о пропавшем файле. Удалите все поврежденные элементы и rsync из вашего репозитория, чтобы заменить их.

...