Ошибка ссылки объекта 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
, вероятно, будет аналогичным. Это позволит перезапустить выборку из последнего правильного состояния.