Git-svn/hgsubversion клон переименованного проекта
У меня есть проект SVN, и я хочу клонировать либо в Git, либо в Mercurial. Клонирование обоих VCS работает нормально, за исключением одной серьезной проблемы - я всегда получаю только последнюю ревизию, никакой другой истории.
Я ясно вижу, что корень проблемы в том, что проект SVN был недавно переименован (переименование - последняя ревизия, единственная, которую мне удалось получить). Используя SVN, я могу видеть всю историю проекта без каких-либо проблем.
Самое странное, что когда я использую git-svn clone, я вижу, как он проходит через множество ревизий, якобы импортируя их, но я все равно получаю только одну ревизию в конце. Mercurial, который работает в обратном направлении, в отличие от Git, просто берет последнюю ревизию и выполняет клонирование.
Также важно отметить, что последнее переименование / перемещение последнего проекта SVN не единственное. До этого было как минимум два других переименования, и мне нужна полная история проекта, как я вижу это с помощью SVN.
2 ответа
идеи
Так как невозможно клонировать несуществующий svn-URL с PEG-ревизией
hg clone http://mayorat.ursinecorner.ru:8088/svn/Hello/branches/Greetings@16
abort: HTTP Error 404: Not Found
даже если
svn ls http://mayorat.ursinecorner.ru:8088/svn/Hello/branches/Greetings@16
Hello.txt
Вы можете попытаться клонировать репо, используя родительский переименованный каталог od в качестве пользователя root. Вы получите много нерелевантных наборов изменений для родственных путей, но (если переименование было справедливым svn move
) Надеюсь, все chagesets для рассматриваемого пути будут в репо: у вас есть только история очистки
- Разделить и объединить
Создать дамп SVN-репо, разделить его с помощью svndumpfilter на отдельные дампы (дамп для каждого измененного имени каталога), загрузить дампы в отдельные svn-репо, клонировать каждое svn-репо в собственное Mercurial репо (репо не может иметь более одного источника subversion), вытащить репо в общий, исправить историю
Для Mercurial, я вижу это руководство, которое может оказаться полезным. Есть еще один вопрос справа, связанный с git-svn, чтобы решить вашу проблему.
Я предполагаю, что вы видели это, учебник по git-svn, сделанный проектом Parrot. Кроме того, кажется, что вам нужно выполнить git rebase после git log, чтобы определить хеш-код ревизии, который вы хотели бы использовать. Как и раньше, если вам нужна дополнительная информация, оставьте комментарий.