你能用git svn指定哪些svn分支吗?

时间:2009-01-15 03:05:01

标签: git version-control git-svn

我认为我的问题与CaptainPicard's有些相似,但有点不同,我觉得有必要这样问。

我有一个旧的SVN存储库,大约有7500个版本,其中7500个版本中的一部分是一些相当大的.fla文件。并且这些.fla文件存在于已创建的许多分支中。因此,导入后我的.git目录非常大,如果我得到整个主干,所有分支和所有标签,就像3.5 GB一样。为了配合这个,我做了另一个svn克隆只是我想要使用的trunk中的目录,但是包括所有分支显然都会删除所有的历史和对象。

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

为了清晰起见,

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

的分支

2 个答案:

答案 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存储库。