Миграция базара в git с фиксацией свойств для исправления ошибок

Мы использовали bazaar-vcs в течение нескольких лет, но решили перейти на git из-за некоторых давних досадных ошибок и остановили разработку bzr.

При использовании базара мы широко использовали функцию "метаданных отслеживания ошибок" на базаре ( http://doc.bazaar.canonical.com/bzr.dev/en/user-reference/bugs-help.html). Таким образом, каждая фиксация с исправлением ошибок включала в себя идентификатор соответствующего mantis-bug-Id, чтобы у нас была связь между источником и богомолом.

Наше сообщение коммита не включает в себя идентификатор богомола, мы использовали только "функцию метаданных":

Для нас очень важно, чтобы мы не теряли эту информацию, поэтому мне нужно решение для переноса этих баг-ссылок в той или иной форме.

Я уже пытался экспортировать / импортировать наш базарный репозиторий в git с помощью команд fast-import/fast-export:

быстрый экспорт bzr --no-plain --rewrite-tag-names / var / www / source_branch / | git fast-import

К сожалению, я получаю следующую ошибку:

fatal: This version of fast-import does not support feature commit-properties.

Однако, если я использую опцию --plain вместо --no-plain, импорт будет работать, но мы потеряем все связи с нашими ошибками.

Есть ли какое-то решение / обходной путь для перехода с bzr на git без потери всех этих баг-ссылок, которые так важны для нас?

[Редактировать]: Я только что проанализировал формат файла fast-import/fast-export, который очень прост. Должна быть возможность написать некоторый сценарий для изменения файла и переместить строки (свойства ошибки...) в соответствующую строку сообщения о коммите. Однако, если есть готовое решение, я буду рад его услышать:)

2 ответа

Решение

Git Fast-import не поддерживает свойства метаданных, поэтому не было возможности перенести эту информацию исключительно с помощью существующих инструментов.

Поскольку ответа не было, и потеря всех этих идентификаторов ошибок была для нас невозможной, я написал быстрое экспортное средство перезаписи потока, которое способно перезаписывать поток в формате, понятном git, но со всей нашей информацией об идентификаторах ошибок.

Переписчик C# работает, выполняя следующие шаги:

  1. Разбор коммитов из входного потока
  2. Проверьте, содержит ли коммит команду свойства bugs
  3. Разобрать идентификатор ошибки и изменить сообщение коммита с извлеченным идентификатором ошибки
  4. Исключить другие неподдерживаемые команды только bzr-fastexport ("feature", "псевдоним свойства"))

Больше информации об этом рерайтере + код можно найти здесь: http://www.fusonic.net/en/blog/2013/03/26/migrating-from-bazaar-to-git/

У меня была похожая потребность. Я попробовал переписчик Дэвида, но он выдал вывод, что импорт git не будет работать. Я подозреваю, что это была небольшая ошибка в переименовании некоторых файлов в коммите.

Я понял, что может быть проще просто изменить 'bzr fast-export --plain', чтобы он делал то, что хотел.

Я отправил сообщение об ошибке (быстрый экспорт) в LP: #1606973 и приложил решение, которое работало для меня. После изменения fastimport / exporter.py я просто сделал:

bzr fast-export --git-branch=master --plain | git fast-import
Другие вопросы по тегам