Как объединить репозитории в один на базаре? - PullRequest
2 голосов
/ 24 марта 2012

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

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

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

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

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

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

1 Ответ

4 голосов
/ 24 марта 2012

Вы можете сделать это с помощью команды 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.

...