pack_report: core.packedGitWindowSize = 1073741824
pack_report: core.packedGitLimit = 8589934592
pack_report: pack_used_ctr = 90430
pack_report: pack_mmap_calls = 46771
pack_report: pack_open_windows = 1 / 1
pack_report: pack_mapped = 340852700 / 340852700
---------------------------------------------------------------------
$git shortlog -sn
369 Bob Jones
365 Joe Smith
Вот, собственно, и всё. Все Mercurial метки были преобразованы в метки Git, а ветки и закладки — в ветки Git. Теперь можно отправить репозиторий на новый Git сервер:
$git remote add origin git@my-git-server:myrepository.git
$git push origin --all
Bazaar это ДСКВ очень похожая на Git, поэтому репозиторий Bazaar достаточно легко сконвертировать в репозиторий Git. Для этого вам необходимо подключить плагин bzr-fastimport.
Установка плагина bzr-fastimport
Для UNIX подобных систем и Windows процедура установки плагина отличается. В первом случае, самый простой способ это установить пакет bzr-fastimport, вместе с которым будут установлены все необходимые зависимости.
Например, для Debian и подобных, следует выполнить:
$sudo apt-get install bzr-fastimport
Для RHEL выполните следующую команду:
$sudo yum install bzr-fastimport
Для Fedora, начиная с версии 22, новый менеджер пакетов dnf:
$sudo dnf install bzr-fastimport
Если пакет отсутствует в репозитории для вашего дистрибутива, то вы можете установить его как плагин, используя следующие команды:
$mkdir --parents ~/.bazaar/plugins # создаст необходимые директории для плагинов
$cd ~/.bazaar/plugins
$bzr branch lp:bzr-fastimport fastimport # импортирует плагин fastimport
$cd fastimport
$sudo python setup.py install --record=files.txt # установит плагин
Чтобы плагин заработал, вам понадобится модуль Python fastimport. Проверить наличие и установить его можно следующими командами:
$python -c "import fastimport"
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named fastimport
$pip install fastimport
Если модуль недоступен, то его можно скачать по адресу https://pypi.python.org/pypi/fastimport/.
Во втором случае (в Windows), bzr-fastimport устанавливается автоматически при стандартной установке (все галочки отмечены). В таком случае дальнейших действий не требуется.
Процесс импорта Bazaar репозитория отличается в зависимости от того одна ветка в вашем репозитории или несколько.
Войдите в директорию, содержащую ваш Bazaar репозиторий и проинициализируйте Git репозиторий:
$cd /path/to/the/bzr/repository
$git init
Теперь, просто экспортируйте свой Bazaar репозиторий и сконвертируйте его в Git репозиторий используя следующую команду:
$bzr fast-export --plain . | git fast-import
В зависимости от размера проекта, Git репозиторий будет готов через несколько секунд или минут.
Проект с основной и рабочей ветками
Вы так же можете импортировать Bazaar репозиторий с несколькими ветками. Предположим, что в вашем репозитории две ветки: одна является основной веткой проекта (myProject.trunk), другая - рабочей (myProject.work).
$ls
myProject.trunk myProject.work
Проинициализируйте Git репозиторий и войдите в его директорию:
$git init git-repo
$cd git-repo
Импортируйте в Git основную ветку с помощью команды:
$bzr fast-export --export-marks=../marks.bzr ../myProject.trunk | \
git fast-import --export-marks=../marks.git
Импортируйте в Git рабочую ветку с помощью команды:
$bzr fast-export --marks=../marks.bzr --git-branch=work ../myProject.work | \
git fast-import --import-marks=../marks.git --export-marks=../marks.git
Теперь, команда git branch покажет вам две ветки: master и work. Проверьте логи чтобы убедиться в отсутствии ошибок, после этого можно удалять файлы marks.bzr и marks.git.
Вне зависимости от количества веток и выбранного метода импорта, индекс не синхронизируется с HEAD, а при импорте нескольких веток - так же не синхронизируется рабочая директория. Эту ситуацию можно легко исправить следующей командой:
$git reset --hard HEAD
Игнорирование файлов из .bzrignore
Теперь давайте посмотрим на файлы, которые следует игнорировать. Первое, что нужно сделать - это переименовать .bzrignore в .gitignore. Если файл .bzrignore содержит одну или несколько строк начинающихся с "!!" или "RE:", нужно их изменить и, возможно, создать несколько файлов .gitignore, чтобы заставить Git игнорировать точно те же файлы, которые игнорируются Bazaar.
Наконец, создайте коммит со всеми изменениями, внесенными во время миграции:
$git mv .bzrignore .gitignore
$ # modify .gitignore if needed
$git commit -am 'Migration from Bazaar to Git'
Читать дальше