3

我认为我的问题与CaptainPicard 的问题有些相似,但又足够不同,以至于我不得不问,所以就这样吧。

我有一个旧的 SVN 存储库,其中包含大约 7500 个修订版,其中 7500 个修订版中的一部分是一些非常大的 .fla 文件。这些 .fla 文件存在于许多已创建的分支中。因此,导入后我的 .git 目录非常大,如果我得到整个主干、所有分支和所有标签,则大约为 3.5 GB。为了将其配对,我对我想要使用的主干中的目录进行了另一个 svn 克隆,但包括所有分支显然会拉下所有历史记录和对象。

所以我的问题是,有没有办法告诉 git 只获取某些分支。例如只获取以某个标识符开头的分支(例如 mybranch)?

为清楚起见更新:我知道我可以将 git svn init/clone 指向单个特定分支。我想要做的就是将它指向一组分支。例如,不匹配分支/*,只匹配 mybranchset* 的分支

4

2 回答 2

1

git svn命令中,您只能使用星号通配符来指定目录的所有成员 ( directoryname/*) 而不是文件名变体 ( fileprefix*)。如果git svn修改为使用 SVN 的新合并跟踪,将来可能会改变。

因为 Git 只为每个分支存储一个提交的指针(而不是相关文件的重复目录),所以一旦你重新打包它,你的 Git 存储库将大大减小,正如匿名答案所说。不幸的是,Git 不能像存储文本文件提交那样为 Flash 文件存储变更集,因此它们在更改时会被复制。

我建议你使用

$ git gc --aggressive  

重新打包你的回购。它修剪重复项并处理比git repack.

于 2009-01-15T20:55:44.137 回答
0

您可以使用您选择的 svn url 指定 git svn init,包括指向特定分支甚至分支的一部分。

您还应该考虑执行“git repack -f -a -d --window=250”以查看 git 是否可以找到某种方法来缩小 3.5 GB 存储库。

于 2009-01-15T03:22:47.397 回答