【问题标题】:Can you specify which svn branches with git svn?你能用 git svn 指定哪些 svn 分支吗?
【发布时间】:2009-01-15 03:05:00
【问题描述】:

我认为我的问题与CaptainPicard's 有点相似,但又完全不同,以至于我不得不问,所以就这样吧。

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

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

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

【问题讨论】:

    标签: git version-control git-svn


    【解决方案1】:

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

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

    我建议你使用

    $ git gc --aggressive  
    

    重新打包你的仓库。它修剪重复项并处理比git repack 更多的优化。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-11
        • 1970-01-01
        • 1970-01-01
        • 2011-07-07
        • 1970-01-01
        • 1970-01-01
        • 2013-05-28
        相关资源
        最近更新 更多