我有三个独立的Bazaar存储库。它们都与单个项目相关,但没有重叠文件。
我想将它们组合到一个存储库中,在不同的子文件夹下,并保留它们的历史记录。
这可能吗?请注意,我不想保持存储库的独立性。这将是一次性操作。
在GIT中有一个解决方案:How do you merge two Git repositories?但是我找不到类似于Bazaar的东西。
我尝试了什么:
我尝试合并存储库,但是在两个存储库中具有公共路径的文件会导致冲突。我希望它们在不同的子目录下合并,但无法弄清楚如何。我主要以非协作的方式使用Bazaar;我不熟悉merge
命令。
更新:我发现a bzr plugin旨在完全符合我的要求,但却是错误的。
答案 0 :(得分:4)
您可以使用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
。
答案 1 :(得分:0)
在撰写本文时(2021 年 7 月),似乎有一个插件,至少适用于集市(而不是微风) - https://launchpad.net/bzr-merge-into