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

Fatal: git -write-tree: ошибка создания деревьев

Я пытаюсь импортировать большой репозиторий subversion в git с помощью git -svn (чтобы я мог работать в git, но время от времени dcommit to 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 немного ниже, чем последний импортированный revsion, похоже, тоже не помогает, и вручную удаляет последние записи из reflog до XY.
  • перезагрузка. Звучит глупо, но я наблюдал некоторые странные проблемы при импорте первой версии 4000, как будто что-то просачивало много ресурсов ядра (скорее всего, в подсистеме Windows), может быть связано с msys/mingw (или с антивирусным сканером avira, который я отключил для тестирования).

Я также не обнаружил, что действительно означает 128. Есть идеи? Спасибо заранее!

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

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

4b9b3361

Ответ 1

git svn gc

(возможно, git gc и git prune до)

Ответ 2

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

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

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

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

Удачи!