Мне просто пришлось самому решать эту проблему. У меня есть машина с Windows XP с отдельным сервером Windows, на котором размещен VisualSVN Server .
У меня также установлен TortoiseHG и клиент командной строки CollabNet Subversion .
<Enable Convert Extension w/ Tortoise Hg 2>
Большое спасибо bgever за указание в комментариях, что с TortoiseHg 2.0 включение расширения convert стало проще, чем когда-либо. Как он говорит
В TortoiseHG 2.0 это стало намного проще: запустить TortoiseHG Workbench из меню «Пуск». Выберите Файл -> Настройки. Выберите Extensions из списка. Установите флажок «конвертировать» и нажмите «ОК». Это оно! Больше не нужно пытаться сгенерировать файл конфигурации и искать его в файловой системе. - bgever 11 марта в 7:56
</Enable Convert Extension w/ Tortoise Hg 2>
<Enable Convert Extension Manually>
Чтобы преобразовать репозиторий из SVN в HG, я выполнил следующие шаги:
1) Откройте C: \ Program Files \ TortoiseHg \ Mercurial.ini
РЕДАКТИРОВАТЬ
К вашему сведению - Tortoise Hg перенесла этот файл в
- XP или старше - C: \ Documents and Settings \ USERNAME \ Mercurial.ini
- Vista или более поздняя версия - C: \ Users \ USERNAME \ Mercurial.ini
Этот файл будет в основном пустым, и вы просто укажете, что вы хотите переопределить. Если это то, что у вас есть, просто добавьте эти две строки в самый конец файла:
[extensions]
convert =
2) Найдите строку, которая начинается с
[расширения]
3) Ниже вы увидите список ключевых слов, закомментированных точкой с запятой (;) в каждой строке.
4) Найдите строку с надписью
; convert =
и удалите точку с запятой, чтобы она читалась
convert =
</Enable Convert Extension Manually>
5) Откройте командную строку и перейдите в каталог, в котором вы хотите создать новую папку hg (процесс создаст новую папку с именем yoursvnreponame-hg в каталоге, для которого открыта командная строка).
6) Используйте эту команду
hg convert file: /// y: / yoursvnreponame
Я обнаружил, что у инструмента преобразования могут быть проблемы с сетевыми репозиториями, поэтому мне пришлось подключить к нему диск, но это сработало для меня.
источник
Mercurial имеет для этого встроенное расширение преобразования .
источник
Чтобы преобразовать репозиторий SVN в репо HG И скопировать его на другой сервер, вам понадобится несколько вещей.
convert
расширение в Tortoise. Запустите TortoiseHG Workbench из меню «Пуск». ВыбратьFile -> Settings
. ВыберитеExtensions
из списка. Установитеconvert
флажок и нажмите ОК.Сначала преобразование…
\\server\folder
не отображайте саму папку SVN Repo. Сопоставьте папку чуть выше нее) Дайте подключенному диску букву, напримерY:\
CD /D Y:\
Y:\
командной строке введите:hg convert y:/RepoName
(используйте имя текущего репо) Будьте осторожны с косой чертой (косой чертой). Тот, что находится в команде, - это косая черта. Также, если в имени есть пробелы, заключите имя в кавычки. (т.е.Y:/"My Repo folder"
)Во-вторых, клонирование…
File -> Clone Repository
источник
init
использовать первый репозиторий?Никто до сих пор не упоминает hgsubversion ( Extension Wiki ), которая может сделать это практически без головной боли (за исключением редких случаев и конкретного дерева).
Просто добавьте расширение, включите его и
hg clone SVN_REPO
в локальное репозиторий Mercurialисточник
Это в FAQ TortoiseHg :
Так что, очевидно, это возможно - я использую Linux, поэтому я не пробовал.
источник
Я только что преобразовал удаленное репозиторий SVN с HTTP-аутентификацией в репозиторий Mercurial и позвольте мне сказать вам, что документации о том, как это сделать, не так много. Мне пришлось загрузить исходный код Mercurial и установить его отдельно, используя исходный пакет, чтобы привязки SVN работали правильно.
Установил так:
Что отлично работало на моем сервере 2003. Теперь я могу правильно преобразовать репо SVN, сделав что-то вроде этого:
Документация для ConvertExtension на сайте Mercurial не очень ясна, но в ней говорится следующее:
Так что теперь я использую автономную версию для конвертации, а TortoiseHg - для реальной работы VCS.
источник
лучше поздно, чем никогда ...
Два ответа по цене одного ...
Если это общедоступное репо с открытым исходным кодом, вы можете просто использовать http://svn2github.com/add/, что заняло около получаса, чтобы клонировать это репо в GitHib, а затем просто перетащить его в Hg.
Преимущество использования в
hg convert
том, что его можно возобновить. Преобразование SVN в Hg может занять несколько дней . Если вы остановите это, он возобновится с того места, где остановился.Ниже приведен командный файл, который я написал, потому что Codeplex SVNbridge - мусор. Репо в этом примере потребовало пару дней, чтобы получить всю историю (я нахожусь в Австралии, поэтому задержка могла быть фактором). Я хотел бы думать, что это дало возможность серверу TFS где-то хорошее преимущество.
Этот командный файл может быть запущен в любое время для получения обновлений из источника SVN, если они оказались единственными на Земле, которые действительно все еще используют SVN. Я не тестировал его, поэтому посмотрите, что произойдет, если вы сделаете это, поэтому на вашем месте я бы отказался от исходной ветки, если вы собираетесь редактировать репо.
robocopy shamap
том, чтобы поддерживать историю SVN, если вы клонируете репозиторий Hg, shamap эфемерен - проверьте пакетный файл и shamap (я бы сделал это в новой ветке).партия ...
источник
Используя
convert
расширение Mercurial:convert=
в[extensions]
раздел .hgrc вот так:sudo apt-get install python-subversion
hg convert
командуhg convert -h
за помощьюhg convert http://[svnserver]/[Project] --source-type svn [DestinationDir]
(см. Примечание 2)hg push https://[mercurialserver]/[Project]
Примечание : вы даже можете повторить команду hg convert, чтобы включить новые изменения, сделанные в репозитории svn после предыдущего преобразования.
примечание 2 : когда hg convert не работает с использованием,
http://
илиsvn://
вы можете сначала проверить репозиторий Subversion (или обновить существующий) и выполнить преобразование с помощью локальной проверки; пример:hg convert [DirectoryOfLocalCheckout] --source-type svn [DestinationDir]
источник