фатально: git-write-tree: ошибка построения деревьев


Я пытаюсь импортировать большой репозиторий subversion в git с помощью git-svn (так что я могу работать в git, но по-прежнему время от времени поручаю subversion). После импорта более 4000 ревизий я теперь получаю следующую ошибку всякий раз, когда я запускаю git svn fetch или git svn rebase, от которой мне не удается избавиться:

$ git svn fetch
error: invalid object 100644 1f2....742 for 'src/path/.../file.cs'
fatal: git-write-tree: error building trees
write-tree: command returned error: 128

То, что я пробовал до сих пор:

  • git fsck --full ничего не сообщает, как и git fsck --unreachable или git fsck --no-reflog
  • git gc --aggressive не помогает
  • перемещение одиночного пакета файл прочь и реимпортировать его с помощью git unpack-objects не помогает
  • git svn reset -rXY с XY немного ниже, чем последняя импортированная версия, похоже, тоже не помогает, как и ручное удаление последних записей из reflog до XY.
  • перезагрузка. Звучит глупо, но я заметил некоторые странные проблемы при импорте первой версии ~4000, как будто что-то утечка много ресурсов ядра (скорее всего, в подсистеме windows), может быть связано с msys / mingw (или антивирусный сканер avira, который я отключен для тестирования).

Я также не выяснил, что на самом деле означает ошибка 128. Есть идеи? Заранее спасибо!

Может быть связано с этим вопросом, который также касается ошибки 128, но с различными сообщениями об ошибках и без решения.

Msysgit версия 1.6.4.msysgit.0 с bash на xp sp3

2 17

2 ответа:

git svn gc

(возможно git gc и git prune до этого)

Краткий ответ: попробуйте разрешить любые конфликты слияния, зафиксировать их, и они снова извлекут/вытянут.

Более подробное объяснение: Я предполагаю, что вы решили эту проблему, так как она была опубликована так давно. Я пишу это, поскольку рейтинг статей Google StackOverflow достаточно высок, чтобы другие люди с этой проблемой с большой вероятностью посетили эту страницу, если бы у них была эта ошибка.

Я столкнулся с подобной ошибкой при попытке сделать "git stash", что оказалось проблемой было что конфликт слияния произошел после вытягивания. Я не разрешил и не зафиксировал конфликт, и это оставило хранилище в состоянии, которое помешало мне вытащить / объединить / и т. д...

Если вы убедились, что у вас нет никаких блокирующих файлов, попробуйте еще раз.

Удачи!