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

StackOverflow https://stackoverflow.com/questions/67021

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

bzr split sub_folder

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

Другие советы

Используйте плагин быстрого импорта (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

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

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

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, однако это работает не так, как я ожидал.

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

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

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

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

Сделайте

bzr init .
bzr add .
bzr commit

в каталоге фреймворка.

Затем вы можете разветвлять и объединять только этот каталог.

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

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

bzr branch . mycopy
bzr branch . myothercopy

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top