如何导出子文件夹的市集历史

时间:2020-03-05 18:54:33  来源:igfitidea点击:

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

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

解决方案

回答

据我所知,没有一种方法可以轻松地通过集市来做到这一点。一种可能性是采用原始项目,将其分支,然后删除与框架无关的所有内容。然后,我们可以将子目录中的文件移动到主目录。这很繁琐,但是可以保留历史记录。

我们将得到类似以下内容的结果:

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

branch framework: 
a.file
b.file
c.file

回答

据我所知,Bazaar还不支持"嵌套"分支。 Git支持"子模块",其行为与Subversion外部组件相似。

回答

我们使用split命令:

bzr split sub_folder

这将在子文件夹中创建一个独立的树,我们现在可以将其导出并单独处理。

回答

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

  • 结果分支仍然包含所有原始目录中所有文件的历史记录,并且完整的检出将检索所有文件。似乎split唯一要做的就是将存储库转换为富根存储库,以便该特定树只能属于某个子目录,但是存储库仍包含所有其他目录,其他签出仍可以检索整个树。

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

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

因此,在永久删除所有其他历史记录的同时将更多信息建议拆分为一个Bazaar分支至其子目录之一。

回答

使用快速导入插件(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