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, чтобы определить хеш-код ревизии, который вы хотели бы использовать. Как и раньше, если вам нужна дополнительная информация, оставьте комментарий.

Другие вопросы по тегам