Как объединить репозитории в один на базаре?

У меня есть три независимых хранилища Bazaar. Все они связаны с одним проектом, но не имеют перекрывающихся файлов.

Я хочу объединить их в один репозиторий, в разных подпапках и сохранить их историю.

Это возможно? Обратите внимание, что я не хочу поддерживать независимый характер хранилищ. Это будет разовая операция.

В GIT есть решение для этого: как объединить два репозитория Git? Но я не смог найти что-то похожее на базар.

Что я пробовал: я пытался объединить репозитории, но файлы, которые имеют общие пути в этих двух репозиториях, вызывают конфликты. Я хотел бы, чтобы они были объединены в разных подкаталогах, но не мог понять, как. В основном я использую Bazaar без сотрудничества; Я не знаком с merge команда.

Обновление: я нашел плагин bzr, который стремится делать именно то, что я хочу, но глючит.

2 ответа

Вы можете сделать это с merge -r0..-1 команда. Но если вы хотите поместить файлы в разные подпапки, лучше сделать это до слияния.

Допустим, у вас есть один main компонент и 2 подкомпонента: foo а также bar, Вы хотите, чтобы ваш новый комбинированный проект имел следующую структуру:

ProjectRoot/
    main.txt     <-- any files from main component 
    ...               should be at the root of the project
    ...
    bar/         <-- bar subdirectory with files from bar component
    foo/         <-- foo subdirectory with files from foo component

Мы будем сливаться foo а также bar в main, Но сначала давайте переместим файлы в подкаталоги:

cd /path/to/foo
bzr mkdir foo
bzr mv file1 file2 foo
bzr commit -m "files moved into foo/ subdirectory"

И похоже на bar:

cd /path/to/bar
bzr mkdir bar
bzr mv file3 file4 bar
bzr commit -m "files moved into bar/ subdirectory"

Теперь мы готовы объединить все в main:

cd /path/to/main
# ensure the working tree does not have uncommitted changes
bzr status
# now merge foo
bzr merge -r0..-1 /path/to/foo
# if there is no conflicts then you can commit this part
bzr status
bzr commit -m "merged foo component"
# now merge bar
bzr merge -r0..-1 /path/to/bar
# if there is no conflicts then you can commit this part
bzr status
bzr commit -m "merged bar component"

После этого ваш main будет иметь оба foo а также bar слиты.

Похоже, для этого есть плагин, по крайней мере, для базара (в отличие от breezy) на момент написания (июль 2021 г.) - https://launchpad.net/bzr-merge-into

Другие вопросы по тегам