【问题标题】:How much space do I need for Git vs SVN?Git 与 SVN 需要多少空间?
【发布时间】:2011-10-11 14:37:22
【问题描述】:

我们目前使用 Subversion 作为我们的源代码存储库。我们正处于转换为 Git 的计划阶段。我们的 Subversion 存储库目前为 19Gb。 Git 存储库与 Subversion 在磁盘空间要求方面有何不同?我的 19Gb svn 存储库将在 Git 存储库中转换成什么。

【问题讨论】:

  • 唯一确定的方法:进行转换,然后自己看看。
  • 要考虑的另一件事是每个 Git 客户端也存储整个 repo,SVN 但是每个客户端只存储最新版本。所以你的整体 Git 空间需求是整个 repo 大小 x 客户端数量 + 1(服务器)。

标签: git svn


【解决方案1】:

很难猜测您的 Git 存储库将占用的确切大小,因为它取决于多个因素,例如

  • 存储对象的类型
  • 分支数量,标签
  • 相似/重复对象的数量

Git 具有良好的压缩算法,根据我过去的经验,它能够将 SVN 存储库的大小减少多达 10 倍。 Here's some examples.

但是,最好的方法是自己尝试。在您的本地机器上,您可以将 SVN 存储库转换为 Git

$ git-svn clone -s http://path/to/subversion reponame

然后运行git gc 看看你需要多少空间才能启动。

【讨论】:

    【解决方案2】:

    由于 git 将整个 repo 保存在每台机器上,它还会存储完整的历史记录,如果您添加然后删除了一个大文件,您会注意到实际上磁盘空间并没有减少。如果您完全确定要永久删除文件,则需要在 git 中运行特殊命令。

    git filter-branch -f --index-filter 'git rm -r --cached --ignore-unmatch "filename"' --prune-empty HEAD
    rm -rf .git/refs/original/ && git reflog expire --expire=now --all && git gc --aggressive --prune=now
    

    今天我使用 git svn 命令将我的一个 svn 存储库移至 git,它不仅允许您移动当前数据,还允许您移动历史记录。这就是我所拥有的。

    我电脑上当前的 svn repo 大小是 1.27 GB,新创建的 git repo 是 3.24 GB。这是因为 git repo 包含整个历史记录,删除的文件实际上并没有在 git 中删除,除非你像我上面提到的那样明确地这样做。 如果您在迁移到 git 时发现任何问题,您可以寻找答案here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      相关资源
      最近更新 更多