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.*