Ошибка ссылки объекта SVN2Git

Моя проблема: Миграция с помощью Ubunut VM в Windows; У Windows был синий экран смерти; Windows перезагрузилась; миграция была повреждена!

~/folder$ svn2git --rebase
error: refs/remotes/svn/some_branch does not point to a valid object!
fatal: git cat-file 81974ef70e6b9dba85295bf7341dd6808c03250d: bad file
cat-file commit 81974ef70e6b9dba85295bf7341dd6808c03250d: command returned error: 128

command failed:
git svn fetch

Я уже пытался исправить мою проблему, как упомянуто в этих ответах:

К сожалению, никто не помог мне до сих пор.

Кто-нибудь знает, как это исправить? Эта миграция уже заняла +2 недели, и я больше не хочу начинать.

Ответ 1

Есть инструменты pleny, называемые svn2git, вероятно, лучший из них - это KDE один из https://github.com/svn-all-fast-export/svn2git. Из вашего вопроса я заключаю, что вы не используете этот, но тот, который основан на git-svn. Я настоятельно рекомендую использовать этот инструмент svn2git. Это лучшее, что я знаю, доступный там, и он очень гибкий в том, что вы можете делать с его файлами правил.

И вся миграция, которая заняла у вас более 2 недель, скорее всего, будет завершена через несколько часов, так как она невероятно быстро.

Если вы не 100% об истории своего репозитория, svneverever из http://blog.hartwork.org/?p=763 - отличный инструмент для исследования истории репозитория SVN при переносе его на Git.

Ответ 2

Первая проблема, которую нужно решить, - убедиться, что git-fsck работает нормально. Впоследствии вторая проблема заключается в том, чтобы продолжить миграцию.

Вероятно, первые коммиты ветки были правильно записаны на диск, но последние не удались. Попробуйте запустить git reflog show refs/remotes/svn/some_branch. Если он показывает фиксации, попробуйте найти последнее сообщение, которое присутствует: git show <hash>. Затем вы reset ветвь: git update-ref -m 'last commit found' refs/remotes/svn/some_branch <hash>.

Затем запустите git fsck и исправьте следующую ветвь.

git-svn имеет команду git svn reset -r <n>. svn2git, вероятно, будет аналогичным. Это позволит перезапустить выборку из последнего правильного состояния.