Git -svn fetch/rebase failing после попытки восстановления поврежденного файла
Недавно у меня был поврежден объект в моем репозитории, указав на мой HEAD (объект был пуст). Это произошло после прерывания команды git -svn. Затем я восстановил свой репозиторий, изменив вручную ссылки на этот объект.
Теперь я хочу синхронизировать репозиторий git с SVN, но git svn fetch возвращает:
fatal: Invalid revision range 5a5dc92cd3083960fb4828ae387a32cda0554fa8..refs/remotes/a-branch
rev-list --pretty=raw --no-color --reverse 5a5dc92cd3083960fb4828ae387a32cda0554fa8..refs/remotes/a-branch --: command returned error: 128
5a5dc92cd3083960fb4828ae387a32cda0554fa8 относится к поврежденному объекту, я хотел бы сказать git -svn не рассматривать этот объект, а другой, но я не знаю, как это взломать.
Если кто-нибудь знает, где/как git -svn внутренне сохраняет это значение, было бы здорово.
Спасибо
Ответы
Ответ 1
если у вас есть метаданные svn, сохраненные с вашими сообщениями фиксации (те http://svn.…./svn/[email protected] (<id>)
), вы можете удалить файлы .rev_map.<id>
из каталогов .git/svn/…
.
git -svn затем заново создаст их перед запуском следующей команды.
Изменить:
При запуске git gc
, если вы видите вывод по строкам:
$ git gc
warning: reflog of 'HEAD' references pruned commits
warning: reflog of 'refs/heads/master' references pruned commits
warning: reflog of 'refs/remotes/trunk' references pruned commits
Тогда вы знаете, что вам нужно выполнить вышеупомянутый трюк. В этом случае:
rm .git/svn/refs/remotes/trunk/.rev_map.*