Итак, сначала делаем копию репозитария (я добавляю опцию --noupdate, чтобы скопировать только метаданные)
$ hg clone --noupdate project.orig project.hg
Затем нам нужно установить расширение hg-git и подключить его в ~/.hgrc. В дебиан для этого нужно установить пакет mercurial-git
$ sudo aptitude install mercurial-git $ cat >> ~/.hgrc <<_EOF_ [extensions] hgext.bookmarks = hgext.git = hgext.convert = _EOF_
Инициализируем пустой git репозитарий (тут нужно обратить внимание на опцию --bare, иначе hg push закончится ошибкой "прервано: git remote error: refs/heads/master failed to update"
$ mkdir project.git $ git init --bare project.git/.git Initialized empty Git repository in /home/andrey/tmp/hg-to-git/project.git/.git/
Если нужно скопировать информацию о ветках, кроме default, то нужно сначала добавить соответствующие bookmarks в репозитарии mercurial
$ cd project.hg $ hg bookmark -r default master $ hg bookmark -r feature1 feature_1 ...
Когда все будет готово настает время выполнить push из репозитария project.hg в project.git
$ cd project.hg $ hg push ../project.git проталкиваем в ../project.git/ creating and sending data
На большом репозитарии этот процесс может занять много времени и потребовать достаточный объем оперативной памяти. Если процесс завершился без ошибок, то пора проверить историю комитов и соответствие бранчей в project.git
$ cd project.git $ git log -n 1 commit 2c765e70ad96c2bd2bc6cc0b545038f4faa42c25 Author: John Doe <john.doe@example.com> Date: Sun Apr 20 12:27:44 2014 +0300 Latest fixes for reviews. $ git branch * master feature_1
Теперь все готово и можно работать с репозиторием через git.
Комментариев нет:
Отправить комментарий