4

我正在编写一个框架以及一个使用该框架的项目。该项目是一个 Bazaar 存储库,框架位于项目下方的子文件夹中。

我想为框架提供一个自己的 Bazaar 存储库。我该怎么做?

4

6 回答 6

6

您使用拆分命令:

bzr split sub_folder

这会在子文件夹中创建一个独立的树,您现在可以单独导出和处理它。

于 2008-09-26T11:18:26.910 回答
6

使用快速导入插件(http://bazaar-vcs.org/BzrFastImport):

1) 将所有历史记录导出到流中:

bzr fast-export BRANCH > full-history.fi

2)过滤历史以产生新的流:

bzr fast-import-filter -i subfolder full-history.fi > subfolder.fi

3)仅使用子文件夹重新创建新分支:

bzr init-repo .
bzr fast-import subfolder.fi
于 2009-02-27T20:54:50.340 回答
0

据我所知,没有办法通过集市轻松做到这一点。一种可能性是获取原始项目,将其分支,然后删除与框架无关的所有内容。然后,您可以将子目录中的文件移动到主目录。这是一件苦差事,但可以保留历史。

你最终会得到类似的东西:

branch project:
.. other files.. 
framework/a.file
framework/b.file
framework/c.file

branch framework: 
a.file
b.file
c.file
于 2008-09-15T21:24:45.853 回答
0

据我所知,Bazaar 还不支持“嵌套”分支。Git 支持“子模块”,其行为类似于 Subversion 外部。

于 2008-09-23T17:51:01.220 回答
0

我曾尝试使用 bzr split 来执行此操作,但是,这并不符合我的预期。

  • 生成的分支仍然包含所有原始目录中所有文件的历史记录,并且完全签出会检索所有文件。看来 split 所做的唯一事情是将存储库转换为丰富的根存储库,以便这个特定的树只能属于某个子目录,但存储库仍然包含所有其他目录,其他签出仍然可以检索整个树。

我在上面 jamuraa 的答案中使用了该方法,这对我来说要好得多,因为我不必纠结于转换为新的存储库类型。这也意味着从该存储库进行完整的签出/分支只会重新创建我想要的文件。

但是,它仍然有一个缺点,即存储库存储了所有这些“已删除”文件的历史记录,这意味着它占用了不必要的空间(如果您不希望人们能够看到,这可能是一个隐私问题这些“其他”目录的旧版本)。

因此,将不胜感激更多关于将 Bazaar 分支切割到其子目录之一同时永久删除其他所有内容的历史的建议。

于 2009-01-09T04:36:45.310 回答
0

做一个

bzr init .
bzr add .
bzr commit

在框架目录中。

然后您可以分支并合并到该目录。

更高层的集市会忽略该目录,直到您加入。

Bazaar 明白当你做类似的事情时

bzr branch . mycopy
bzr branch . myothercopy

当前目录 .bzr 不会跟踪这些子目录的更改。

它使您免于寻找放置分支的地方。

于 2011-06-09T21:23:17.067 回答