2009-01-15 37 views
3

我认为我的问题有点类似于CaptainPicard's,但不同的是,我不得不在这里问这个问题。你可以指定哪些svn分支与git svn?

我有一个旧的SVN版本库,大约有7500个版本,7500个版本的一部分是一些非常大的.fla文件。这些.fla文件存在于已创建的许多分支中。由于这个我的.git目录在导入后非常大,如果我得到整个主干,所有分支和所有标签,就像3.5 GB。为了配合这一点,我做了另一个svn克隆,就是我想要使用的trunk的目录,但是包括所有的分支明显地将所有的历史和对象都拉下来。

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

更新为清楚:我知道我可以在一个特定的分支点的git svn的初始化/克隆。我想要做的就是将它指向一组分支。例如,而不是匹配分支/ *只分支匹配mybranchset *

回答

1

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

由于Git只存储指向每个分支(而不是相关文件的重复目录)的提交的指针,因此您的Git回购将在重新打包后大大减小,正如匿名回答所述。不幸的是,Git无法像存储文本文件提交那样存储Flash文件的变更集,因此它们在更改时会被复制。

我建议你使用

$ git gc --aggressive 

重新包装你的回购协议。它修剪重复并处理比git repack更多的优化。

0

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

你还应该考虑做一个“git repack -f -a -d -window = 250”来看看git是否可以找到一些方法让你的3.5 GB存储库更小。