Подтвердить что ты не робот

Неустранимая ошибка при распаковке объекта дерева во время git svn fetch

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

4b9b3361

Ответ 1

У меня была та же проблема. Это связано с тем, что версия SVN git -svn не может каким-либо образом читать или иметь дело. Вот что я пытался в порядке:

  • Перемотайте в известную работу: git svn reset -r 42
  • Повторить выборку: git svn fetch - выбирает каждую ревизию, начиная с 42 до виновной (скажем, 50), а затем показывает то же сообщение об ошибке.
  • Извлеките родителя: git svn fetch --parent - Не спрашивайте меня, почему. Это дает больше изменений. Не знаю, насколько это актуально.
  • Повторить выборку: git svn fetch - все еще не работает.
  • Выполните следующие изменения:
    • git svn fetch -r 50 - Работает.
    • git svn fetch -r 51 - Пока нет сообщения об ошибке, продолжайте.
    • git svn fetch -r xx - появляется сообщение об ошибке, это плохая ревизия. Не волнует.
    • git svn fetch -r xx+1 - Работает.
  • Повторить выборку: git svn fetch - Работает! Начинает получать дополнительные версии.

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

Ответ 2

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

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

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

Ответ 3

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