我有一个 Subversion 服务器,标准布局中有几个不同的项目,如下所示:
ProjectA/
trunk/
branches/
tags/
ProjectB/
trunk/
FolderOfBinaries/
SourceFolderA/
SourceFolderB/
SourceFolderC/
branches/
tags/
v1.0/
v1.1/
v2.0/
ProjectC/
trunk/
branches/
tags/
ProjectB 将被迁移到 Git,但不会使用标准克隆。我想将项目拆分为两个 Git 存储库 - 一个用于包含相对经常更改的大型二进制文件的文件夹,另一个用于其他所有内容的存储库。我完全克隆了存储库,它只有几 GB,但二进制文件夹可能是其中的 90%,并且运行git gc
需要很长时间。如果开发人员需要,我宁愿有一个小的快速存储库,然后将二进制文件夹添加为子模块。
到目前为止,我发现了两个潜在的选择。首先,我可以git branch-filter
尝试从历史记录中删除二进制文件夹,如 Git Book 中所示。其次,我可以svndumpfilter
将当前的 Subversion 存储库分成两部分,然后git svn clone
分别分开。
我的问题是,所有的历史会发生什么,尤其是分支和标签?我仍然想知道项目中每个标签的二进制文件夹是什么样的,即使二进制文件在两个标签之间可能没有改变。那可能吗?
编辑:二进制文件的文件夹中没有充满构建工件(*.class、*.o、*.dll 等),所以我不能直接将其剥离并使其成为外部。它充满了需要版本控制的第三方程序输出的二进制文件(想想 OpenOffice 文档、Photoshop 文件等)。