Преобразование репозитория Subversion в Mercurial
Я пытаюсь преобразовать хранилище SVN в Mercurial, но у меня возникли некоторые проблемы. Вот шаги, которые я предпринял: (я на Windows)
Включен параметр "конвертировать" в расширениях
Открыл окно командной строки и набрал:
hg convert http://myversioncontrorepositoryhere
Он говорит, что инициализирует папку назначения, а затем спрашивает:
Enter username for Administration at http://myversioncontrorepositoryhere:
Введите мое имя пользователя, а затем
in Administration at http://myversioncontrorepositoryhere:
Я предполагаю, что это мой пароль, но он просто возвращается к
Enter username for Administration at http://myversioncontrorepositoryhere:
Что я делаю не так? Я в этом совершенно уверен Я правильно ввожу имя пользователя и пароль.
4 ответа:
Я не знаю, что может пойти не так, но я хотел бы предложить обходной путь (который является единственным способом, который я лично использовал для этой задачи!): первый svnsync свойство SVN проекта, чтобы сделать локальное зеркало, то
hg convert
, что локальное зеркало-это то, что О'Салливан предполагает, в его книги (URL-адрес, как "пример из книги", точно соответствующее приложение для импорта проектов из других систем контроля версий в НД-с особым акцентом на SVN!), хотя его предложение в основном вдохновлено соображения скорости я подозреваю, что следование ему также избавило меня от проблем с аутентификацией и авторизацией, и я надеюсь, что он может сделать то же самое для вас!- )
Вместо этого попробуйте hgsubversion; это намного надежнее. У меня было много странных проблем, взаимодействующих с CLI Subversion в Windows (в основном решаемых с помощью CMD вместо другой оболочки).
Мне посчастливилось решить проблему аутентификации, просто преобразовав из локальной проверки:
svn co http://myversioncontrorepositoryhere localrepo hg convert localrepo
По моему опыту, преобразование репозитория Subversion в реальном слове с кучей проектов и многолетней историей немного сложнее. В основном потому, что в Subversion хорошо иметь один огромный РЕПО для всех вещей. Напротив, ртутные хранилища рекомендуется делать гораздо более мелкозернистыми.
Я предполагаю следующее расположение репозитория Subversion:
├── project1 │ ├── branches │ ├── tags │ └── trunk │ ├── package1 │ └── package2 └── project2
Преобразование должно превратить
package1
иpackage2
в отдельные ртутные хранилища со своей собственной историей. В этом ответ меня интересует один путь, но преобразование тегов и ветвей также возможно.Подготовка
Обычно я делаю конвертацию на удаленном сервере с быстрым подключением. Для Debian-family требуются следующие пакеты.
apt-get install mercurial subversion python-subversion
Тогда расширение Convert должно быть включено.
echo -e "[extensions]\nhgext.convert=" >> ~/.hgrc
В Windows убедитесь, что вы выполнили необходимые условия.
Исполнение
Обратите внимание, что если вы попытаетесь выполнить преобразование непосредственно из удаленное РЕПО subversion, скорее всего, займет несколько часов, поэтому следующее создает зеркало пути проекта. Тогда каждое преобразование - это вопрос секунд до минут.
cd /tmp svnadmin create svn-mirror # on Windows you may need to look at comments to accepted answer echo '#!/bin/sh' > svn-mirror/hooks/pre-revprop-change chmod +x svn-mirror/hooks/pre-revprop-change svnsync init file:///tmp/svn-mirror svn://subversion.repo/project1 svnsync sync file:///tmp/svn-mirror echo 'include project1/trunk/package1' > package1-map echo 'rename project1/trunk/package1 .' >> package1-map hg convert --filemap=package1-map svn-mirror package1 echo 'include project1/trunk/package2' > package2-map echo 'rename project1/trunk/package2 .' >> package2-map hg convert --filemap=package2-map svn-mirror package2
Затем внутри каталога пакетов вы можете запустить
hg serve -p 8080
и клонировать изhttp://your.host:8080
с помощью mercurial client или repo manager, например RhodeCode.