Для случая изменения истории нужно использовать 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