Я пытаюсь перенести старый SVN-репозиторий в GIT, используя svn2git (на моем компьютере с Windows), используя следующую команду:
svn2git https://my/svn/url --verbose --authors authors.txt
и все работало нормально, пока я не обнаружил следующую ошибку:
fatal: Not a valid object name refs/remotes/svn/VS2010 Port
cat-file commit refs/remotes/svn/VS2010 Port: command returned error: 128
Кажется, что кто-то (давным-давно) создал ветку с пробелом в имени, и это вызывает хаос в процессе. Запуск git branch -a
показывает ответвление:
remotes/svn/VS2010%20Port
Я провел поиск по Google и StackOverflow и наткнулся на несколько сообщений, в том числе этот один (хотя он ссылается на теги).
Сначала я попытался предложить удалить ветку с помощью git branch -r -d svn/VS2010%20Port
(сохранение этой ветви не важно), а затем я повторно выполнил команду svn2git
. Он начинает работать и в конечном итоге дает сбой с той же ошибкой. Я также попытался удалить ветку и добавить флаг --exclude '.*VS2010.*'
к моей команде svn2git
, но это не помогло:
svn2git https://my/svn/url --verbose --authors authors.txt --exclude '.*VS2010.*'
Затем я попробовал другое предложение запустить команду mv
, чтобы переместить файл / каталог с% 20 в имени в каталог с фактическим пробелом:
mv VS2010%20Port VS2010\ Port
Так как моя проблема не связана с тегами, я не был на 100%, где запустить это, но я попытался в следующих местах:
- .git \ SVN \ рефов \ перепятнышки \ SVN
- .git \ рефов \ перепятнышки \ SVN
- .git \ журналы \ рефов \ перепятнышки \ SVN
Когда я потом запустил команду svn2git
, у меня возникла та же проблема.
Наконец-то я нашел этот пост , посвященный ветвям, но решением было отредактировать файл packed-refs
и заменить% 20 пробелами. Хотя я не увидел ветку VS2010%20Port
, указанную здесь, поэтому я не смог пройти через это решение.
У кого-нибудь есть предложения по поводу того, что я могу попробовать или что-то пропустил?
Обновление:
Я смог добиться некоторого прогресса, добавив флаг --ignore-refs
с регулярным выражением, которое будет соответствовать строке VS2010 Port
. Это большой репозиторий, так что это заняло очень много времени, но в конце концов все закончилось. К сожалению, я не увидел файлов в каталоге (только каталог .git
), поэтому я предполагаю, что что-то пошло не так. Я решил сделать шаг назад и попробовать заново с помощью команды git svn clone
, и на этот раз я поставил флаги --ignore-refs
и --ignore-paths
с самого начала. Надеюсь, на этот раз я получу лучшие результаты.