我认为我的问题与CaptainPicard's有些相似,但有点不同,我觉得有必要这样问。
我有一个旧的SVN存储库,大约有7500个版本,其中7500个版本中的一部分是一些相当大的.fla文件。并且这些.fla文件存在于已创建的许多分支中。因此,导入后我的.git目录非常大,如果我得到整个主干,所有分支和所有标签,就像3.5 GB一样。为了配合这个,我做了另一个svn克隆只是我想要使用的trunk中的目录,但是包括所有分支显然都会删除所有的历史和对象。
所以我的问题是,有没有办法告诉git只获取某些分支。例如,只提取以某个标识符开头的分支(例如mybranch)?
为了清晰起见,更新: 我知道我可以在单个特定分支上指向git svn init / clone。我想要做的是将它指向一组分支。例如,不是匹配branches / *只匹配mybranchset *
的分支答案 0 :(得分:1)
在git svn
命令中,您只能使用星号通配符指定目录的所有成员(directoryname/*
)而不是文件名变体(fileprefix*
)。如果git svn
被修改为使用SVN的新合并跟踪,那么将来可能会发生变化。
因为Git只存储指向每个分支的提交的指针(而不是相关文件的重复目录),所以一旦你重新打包它,你的Git repo就会小得多,正如匿名答案所说的那样。遗憾的是,Git不能像为文本文件提交那样存储Flash文件的更改集,因此它们会在更改时重复。
我建议你使用
$ git gc --aggressive
重新包装你的回购。它修剪重复项并处理比git repack
更多的优化。
答案 1 :(得分:0)
您可以使用您选择的svn url指定git svn init,包括指向特定分支甚至是分支的一部分。
您还应该考虑使用“git repack -f -a -d --window = 250”来查看git是否可以找到一些方法来缩小您的3.5 GB存储库。