如何在Bazaar中将存储库组合成一个存储库?

时间:2012-03-24 05:42:47

标签: merge bazaar

我有三个独立的Bazaar存储库。它们都与单个项目相关,但没有重叠文件。

我想将它们组合到一个存储库中,在不同的子文件夹下,并保留它们的历史记录。

这可能吗?请注意,我不想保持存储库的独立性。这将是一次性操作。

在GIT中有一个解决方案:How do you merge two Git repositories?但是我找不到类似于Bazaar的东西。

我尝试了什么: 我尝试合并存储库,但是在两个存储库中具有公共路径的文件会导致冲突。我希望它们在不同的子目录下合并,但无法弄清楚如何。我主要以非协作的方式使用Bazaar;我不熟悉merge命令。

更新:我发现a bzr plugin旨在完全符合我的要求,但却是错误的。

2 个答案:

答案 0 :(得分:4)

您可以使用merge -r0..-1命令执行此操作。但是如果你想把文件放到不同的子文件夹中,最好在合并之前这样做。

假设您有一个main组件和2个子组件:foobar。您希望新的组合项目具有以下结构:

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

我们会将foobar合并到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合并了foobar

答案 1 :(得分:0)

在撰写本文时(2021 年 7 月),似乎有一个插件,至少适用于集市(而不是微风) - https://launchpad.net/bzr-merge-into