代码之家  ›  专栏  ›  技术社区  ›  nonopolarity

据说Mercurial的“hg克隆版”非常便宜……但我的硬盘是400MB?(在Mac OS X雪豹上)

  •  3
  • nonopolarity  · 技术社区  · 14 年前

    我有一个项目是通过网络克隆到Mac硬盘上的(OS X雪豹)。

    这个项目的硬盘容量约为1GB。

    du -s
    2073848 .
    

    所以当我 hg clone proj proj2

    然后当我

    MacBook-Pro ~/development $ du -s proj
    2073848 proj
    
    MacBook-Pro ~/development $ du -s proj2
    894840  proj2
    
    MacBook-Pro ~/development $ du -s
    2397928 .
    

    所以克隆人似乎不那么便宜…大概在400兆左右…是这样吗?另外,整个文件夹增长了大约200MB,这不是项目和项目2的总和。是否有一些链接和一些不是链接,这就是为什么重叠不算两次的原因?

    3 回复  |  直到 9 年前
        1
  •  3
  •   Idan K    14 年前

    如果可能,Mercurial将在 知识库 数据,它不会在 工作目录 . 因此,它能节省的唯一空间是 .hg 文件夹。

    如果您使用的编辑器可以断开硬链接,则可以 cp -al REPO REPOCLONE 在整个目录上使用硬链接,包括工作目录,但要注意它有一些警告。引用手册:

    为了提高效率,硬链接用于 每当源和 目标位于同一文件系统上 (注意:这只适用于存储库数据,而不适用于工作 目录)。一些文件系统,例如 原子荧光光谱法, 执行硬链接不正确,但不报告错误。在这些 使用--pull选项可以避免 硬连接。

    在某些情况下,您可以克隆存储库和工作目录 使用完整的硬链接

    $ cp -al REPO REPOCLONE
    

    这是最快的克隆方法,但并不总是安全的。这个 操作不是原子操作(确保 回购不是 操作过程中的修改由您决定),您必须确保 您的编辑器断开硬链接(Emacs 而且大多数 Linux内核工具就是这样做的)。此外,这与某些 放置元数据的扩展 在下面 .hg目录,如mq。

        2
  •  2
  •   dimo414    9 年前

    便宜不等于免费。克隆创建了一个新的存储库,它本身就具有空间成本—如果您不希望它位于磁盘上的其他位置,为什么还要克隆呢?不过,与之相比,克隆1GB repo的成本很低,因为mercurial足够聪明,可以识别不需要复制的信息,所以只会在父目录中增加大约200MB的空间。

    我认为更一般地说,你需要停止担心mercurial(或任何dvcs/vcs)如何工作的复杂性。使用版本控制需要更多的磁盘空间和时间。随着数据量和变更次数的增加,空间和时间需求也随之增加。您没有意识到,这些成本远远超过了版本控制的好处。安心的是,你的工作是安全的,你不能不小心搞砸了任何事情,看看你过去的工作的能力,以及在dvc的情况下易于分发,都是非常有价值的。

    如果您的顾虑真的超过了这些好处,那么您应该坚持使用一个简单的文件系统,并使用ftp共享/分发/提交源代码。

    更新

    关于罗姆金斯的评论:你下载了大量的数据。下载大量数据需要时间,不管它是什么。没有办法绕过这个事实,也没有任何办法,Mercurial和任何其他风投都不能让它走得更快。

    但是,Mercurial和分布式模型的好处是,您只需支付一次该成本。由于所有的工作都是在本地完成的,所以您可以将内容提交、还原、更新等提交到您的心脏中,而不需要任何网络开销,并且只需要进行网络操作来进行拉式和推式更改,这是比较少见的。在一个集中式的VCS中,每当您想对源代码做些什么时,您都必须进行网络操作。

    此外,我自己也尝试克隆Mozilla Central,看看要花多长时间,下载变更集和清单需要5分钟,下载文件块需要20分钟,然后更新到默认值(不受网络限制)需要10分钟。35分钟的时间来获取整个Mozilla的代码库,以及整个修订历史并没有那么糟糕。即使在这个拥有约500000个文件和约62000个更改的大型项目上,存储库也只比工作目录大15%,这可以追溯到问题的原始点。

    不过值得一提的是,克隆一个存储库 下载源代码的最佳方法。如果你只想要代码库,你可以 releases . 这个 Mercurial Web Interface 也可以让你 browse the codebase 无需下载任何内容,您可以通过每页顶部的存档链接(bz2、zip、gz)下载任何修订版的完整存档。所有这些选项都比完整克隆更快。只需要克隆存储库 when you want to actively develop Mozilla代码库,而不是你想要的文件。

        3
  •  -1
  •   Vicky    14 年前

    如果你能以60英镑的价格获得1TB的磁盘空间,那么400MB就便宜了(~2P)。