Миграция базара в 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# работает, выполняя следующие шаги:
- Разбор коммитов из входного потока
- Проверьте, содержит ли коммит команду свойства bugs
- Разобрать идентификатор ошибки и изменить сообщение коммита с извлеченным идентификатором ошибки
- Исключить другие неподдерживаемые команды только 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