2015-07-09 4 views
0

Недавно я переименовал свой svn-репозиторий, с которым я работал через git-svn. Я подумал, что если я переименовать папку, в которой мой мерзавец проект живет и обновить GIT конфигурации, где он говорит url = svn://foo/bar на новое имя было бы просто работать, но вместо этого я получаю следующее сообщение об ошибке:git svn wont rebase больше после переименования svn repo

Unable to determine upstream SVN information from working tree history

Что такое осталось сделать, чтобы заставить его работать снова ??

ответ

1

имя репозитория SVN является частью git svn id (и, следовательно, является частью хэшей фиксации), поэтому вы не можете просто переименовать свой svn remote.

Самое простое решение этой проблемы, это сделать еще один клон вашего репозитория SVN, и воспроизводить любые изменения, не приверженных старому репо:

/tmp/oldclone$ git format-patch origin/trunk 
/tmp/oldclone$ cd /tmp 
/tmp$ git svn clone svn:/new.remote/ newclone 
/tmp$ cd newclone 
/tmp/newclone$ git am /tmp/oldclone/????-*.patch 
/tmp/newclone$ git svn dcommit 

, как для отслеживания svn rename каталогов в одном хранилище SVN , вы можете использовать опцию --trunk, чтобы это сделать. Предполагая, что вы имели первоначально каталог /project1/ в корень вашего репозитория, и вы переименовали его /projectA/ (используя что-то вроде svn mv project1 projectA), вы можете сделать частичную проверку хранилища, содержащего всю историю что-то вроде:

/tmp$ git svn clone --trunk=/ svn:/new.remote/ newclone 
+0

Оба репозитория git и svn обновлены. Да, но я могу сделать еще один клон, но как сохранить полную историю? Если бы я просто клонировал новый с помощью 'git svn clone svn:/foo/bar', команда' git log' отобразит только последнюю фиксацию ... – uloco

+0

, поэтому вы не переименовали репозиторий, а просто каталог в репозитории, и сказал git сделать частичную проверку вашего репо. Это не то, что вы просили в первую очередь. во всяком случае, я обновил ответ ... –

+0

Ваша последняя строка кода работает как шарм, спасибо! – uloco