Сбой git-svn fetch / rebase после попытки восстановить поврежденный файл - PullRequest
14 голосов
/ 19 июля 2010

Недавно в моем хранилище был поврежденный объект, указывающий на мою ГОЛОВКУ (объект был пустым).Это произошло после прерывания команды 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 Ответ

18 голосов
/ 19 июля 2010

если у вас есть метаданные svn, сохраненные с вашими сообщениями коммита (те http://svn.…./svn/trunk@r12331 (<id>)), вы можете удалить файлы .rev_map.<id> из каталогов .git/svn/….

git-svn создаст их заново перед выполнением следующей команды.

Edit: При запуске 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.*
...