Я работаю над проектом, который использует SVN для CVS, и около 5-6 месяцев назад мы разветвляли ветку version_1_9_1 из транка. Теперь я должен объединить их.
Чтобы облегчить мою работу с svn, я хотел попробовать git для слияния, поэтому я следовал инструкциям по адресу:
http://blog.wuwon.id.au/2010/09/painless-merge-conflict-resolution-in.html
В итоге я использую следующие команды:
git svn clone -s hxxp://svn/repo/project project (this takes avout 20min for +30k commmits)
git checkout -b version_1.9.1 remotes/version_1_9_1
git checkout -b the_trunk trunk
git merge version_1.9.1
но когда я делаю 'git mergetool' для, скажем, файла web.xml, meld открывает диалоги для LOCAL и REMOTE, но BASE-файл отсутствует.
Пока диалоги слияния все еще открыты, проверьте, какие есть файлы, и получите следующий список:
web.xml
web.xml.BACKUP.12480.xml
web.xml.LOCAL.12480.xml
web.xml.REMOTE.12480.xml
Итак, для моего понимания должен быть также файл с именем web.xml.BASE.12480.xml, но его нет.
Результат один и тот же, независимо от того, включен или отключен diff3.
Это привело меня к мысли, что с клонированием что-то не так ... Поэтому я выполнил следующие команды в чистой директории:
git svn clone -s hxxp://svn/repo/project project
gitk
git checkout -b version_1.9.1 remotes/version_1_9_1
gitk
git checkout -b the_trunk trunk
gitk
(Кстати. Я делаю это в Ubuntu 11.04)
Каждый раз, когда я запускаю gitk, я вижу плоскую «иерархию», где все svn коммиты следуют за другим. Так что, если я правильно понимаю, что-то не так с «git svn clone», так как git не может найти общего предка для trunk и branch version_1.9.1.
Может кто-нибудь указать мне правильное направление в этом вопросе?
Спасибо за чтение.