Для случая изменения истории нужно использовать Python скрипт в качестве файла конфигурации Tailor. У меня получился следующий скрипт:
#! /usr/bin/env tailor
"""
[DEFAULT]
patch-name-format = ""
[project]
source = bzr:project
target = git:project
start-revision = INITIAL
root-directory = /path/to/the/root
before-commit = before_commit
after-commit = after_commit
[bzr:project]
repository = /path/to/the/bzr/branch
subdir = project-bzr
[git:project]
subdir = project
"""
def before_commit(wd, changeset):
changeset.author = "Dmitry Vasiliev <dima@hlabs...>"
return changeset
def after_commit(wd, changeset):
print changeset
print
После создания скрипта нужно дать ему права на выполнение и можно конвертировать.
Разберем скрипт подробнее:
- Заметьте, что первая строка скрипта указывает, что он должен выполняться через tailor
- Строка документации на уровне модуля служит текстом файла конфигурации. Из наиболее интересного:
- Секция [DEFAULT] содержит опции по-умолчанию, где patch-name-format = "" говорит, что не надо трогать комментарии к изменениям
- Секция [project], где в имени нет ':', описывает конфигурацию проекта:
- Параметры source/target - секции с описанием веток Bazaar и Git, соответственно
- root-directory - директорий где будет происходить все преобразование
- before_commit/after_commit - функции, которые будут вызваны, соответственно, до преобразования и после
- Секция [bzr:project] описывает детали ветки Bazaar - путь к ветке и поддиректорий root-directory в котором будет храниться копия ветки
- Секция [git:project] описывает детали репозитория Git - поддиректорий root-directory в котором будет храниться новая ветка Git
- Функция before_commit исправляет автора изменений
- Функция after_commit просто печатает изменения на экран, т.к. я не стал включать подробный лог работы
Comments All comments
Comment by bialix on 14:53, 2009 12 2
Чем тебе fastimport не угодил?
Comment by Dmitry Vasiliev on 15:29, 2009 12 2
Не знаю, пока с Tailor кажется проще. :-)
Add comment