如何导出子文件夹的市集历史
时间: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