2016-08-04 3 views
0

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

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

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

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

+0

Давайте попробуем то ... –

+0

Облицовочные эту ошибку: 'СВН-все-быстро-экспорт: /build/subversion-yttRtj/subversion-1.9.3/subversion/libsvn_subr/dirent_uri.c:972: svn_dirent_join: Assertion svn_dirent_is_canonical (base, pool) не удалось. Aborted (core dumped) ' –

+0

Я никогда не видел эту ошибку. Какую команду вы выдаете? – Vampire

0

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

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

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

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

Смежные вопросы