Bazaar — это распределённая система контроля версий очень похожая на Git, поэтому репозиторий Bazaar достаточно легко сконвертировать в репозиторий Git.
Для этого вам необходимо подключить плагин 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 "<string>", line 1, in <module>
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 в .gitignore.
Если файл .bzrignore содержит одну или несколько строк начинающихся с !! или RE:, нужно их изменить и, возможно, создать несколько файлов .gitignore, чтобы заставить Git игнорировать точно те же файлы, которые игнорируются Bazaar.
Наконец, создайте коммит со всеми изменениями, внесёнными во время миграции:
$ git mv .bzrignore .gitignore
$ # modify .gitignore if needed
$ git commit -am 'Migration from Bazaar to Git'