Как объединить репозитории в один на базаре?
У меня есть три независимых хранилища 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