Как экспортировать историю Bazaar из подпапки

Я кодирую фреймворк вместе с проектом, который использует этот фреймворк. Проект представляет собой репозиторий Bazaar, структура которого находится в подпапке под проектом.

Я хочу предоставить фреймворку собственный репозиторий Bazaar. Как мне это сделать?


4
1 447
6

Ответы:

Насколько я знаю, с базаром это нелегко сделать. Одна из возможностей - взять исходный проект, разветвить его, а затем удалить все, что не связано с фреймворком. Затем вы можете переместить файлы из подкаталога в основной каталог. Это довольно муторно, но сохранить историю можно.

вы получите что-то вроде:

branch project:
.. other files.. 
framework/a.file
framework/b.file
framework/c.file

branch framework: 
a.file
b.file
c.file

Насколько мне известно, "вложенные" ветки пока не поддерживаются Bazaar. Git поддерживает «подмодули», которые ведут себя аналогично внешним модулям Subversion.


Решено

Вы используете команду разделения:

bzr split sub_folder

Это создает независимое дерево во вложенной папке, которое теперь можно экспортировать и работать с ним отдельно.


Я пробовал сделать это с помощью bzr split, однако это не сработало так, как я ожидал.

  • Результирующая ветвь по-прежнему содержит историю всех файлов из всех исходных каталогов, и полная проверка извлекает все файлы. Похоже, что единственное, что делает split, - это преобразование репозитория в расширенный корневой репозиторий, так что это конкретное дерево может относиться только к определенному подкаталогу, но репозиторий по-прежнему содержит все другие каталоги, а другие проверки могут по-прежнему извлекать все дерево.

Я использовал метод в ответе jamuraa выше, и это было для меня намного лучше, поскольку мне не пришлось возиться с преобразованием в новый тип репозитория. Это также означало, что при полной проверке / переходе из этого репозитория были воссозданы только те файлы, которые я хотел.

Однако у него все еще была обратная сторона: в репозитории хранилась история всех этих `` удаленных '' файлов, а это означало, что он занимал больше места, чем необходимо (и может быть проблемой конфиденциальности, если вы не хотите, чтобы люди могли видеть старые версии этих «других» каталогов).

Таким образом, было бы полезно получить больше советов по разделению ветки Bazaar только до одного из ее подкаталогов при безвозвратном удалении истории всего остального.


Используйте плагин быстрого импорта (http://bazaar-vcs.org/BzrFastImport):

1) Экспортируйте всю свою историю в поток:

bzr fast-export BRANCH > full-history.fi

2) Отфильтруйте историю для создания нового потока:

bzr fast-import-filter -i subfolder full-history.fi > subfolder.fi

3) Восстановите новую ветку только с подпапкой:

bzr init-repo .
bzr fast-import subfolder.fi

Сделайте

bzr init .
bzr add .
bzr commit

в каталоге framework.

Затем вы можете выполнить ветвление и слияние только с этим каталогом.

Базар выше будет игнорировать этот каталог, пока вы не выполните соединение.

Bazaar понимает, когда вы делаете такие вещи, как

bzr branch . mycopy
bzr branch . myothercopy

Текущие каталоги .bzr не будут отслеживать изменения этих подкаталогов.

Это избавляет вас от попыток найти место для ветки.