Конвертировать хранилище Subversion в Mercurial - PullRequest
2 голосов
/ 01 ноября 2009

Я пытаюсь преобразовать 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 ]

7 голосов
/ 01 ноября 2009

Я не знаю, что может пойти не так, но я хотел бы предложить обходной путь (это единственный способ, который я лично использовал для этой задачи!): Сначала svnsync svn проект для создания локального зеркала, а затем hg convert этого локального зеркала - это то, что О'Салливан предлагает в своей книге (этот URL, как «образец из книги», точно соответствует приложению для импорта проекты из других VCS в hg - с особым акцентом на svn!), хотя его предложение главным образом основано на соображениях скорости, я подозреваю, что его использование также избавило меня от проблем с аутентификацией и авторизацией, и я надеюсь, что он может сделать то же самое для вас ! -)

3 голосов
/ 01 ноября 2009

Попробуйте hgsubversion вместо; это намного надежнее. У меня было много странных проблем, связанных с CLI Subversion в Windows (в основном, они были решены с помощью CMD вместо другой оболочки).

1 голос
/ 20 июня 2012

Мне повезло, решив проблему с аутентификацией, просто преобразовав из локальной проверки:

svn co http://myversioncontrorepositoryhere localrepo
hg convert localrepo
0 голосов
/ 22 июня 2015

По моему опыту, преобразование реального хранилища Subversion с кучей проектов и многолетней историей немного сложнее. В основном потому, что в Subversion хорошо иметь одно огромное репо для всего этого. Напротив, хранилища Mercurial рекомендуется быть более мелкозернистыми.

Я предполагаю следующую схему хранилища Subversion:

├── project1
│   ├── branches
│   ├── tags
│   └── trunk
│       ├── package1
│       └── package2
└── project2

Конверсия должна превратить package1 и package2 в отдельные репозитории Mercurial с собственной историей. В этом ответе меня интересует один путь, но также возможно преобразование тегов и ветвей .

Подготовка

Обычно я делаю преобразование на удаленном сервере с быстрым подключением. Для семейства Debian требуются следующие пакеты.

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 с помощью ртутного клиента или менеджера репозитория, такого как RhodeCode.

...