据说Mercurial';s";hg克隆";非常便宜。。。但我的硬盘上有400MB吗?(在Mac OS X雪豹上)

据说Mercurial';s";hg克隆";非常便宜。。。但我的硬盘上有400MB吗?(在Mac OS X雪豹上),mercurial,Mercurial,我有一个通过网络克隆到Mac硬盘(OS X Snow Leopard)的项目 该项目的硬盘容量约为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 .

我有一个通过网络克隆到Mac硬盘(OS X Snow Leopard)的项目

该项目的硬盘容量约为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 .

所以克隆人似乎不那么便宜。。。大概在400MB左右。。。是这样吗?另外,整个文件夹增加了大约200MB,顺便说一句,这不是proj和proj2的总和。。。是否存在一些链接和一些非链接,这就是为什么重叠不计算两次的原因?

如果可能,Mercurial将在存储库数据上使用硬链接,而不会在工作目录上使用硬链接。因此,它能保存的唯一空间是
.hg
文件夹

如果您使用的编辑器可以断开硬链接,那么您可以
cp-al REPO REPOCLONE
在整个目录(包括工作目录)上使用硬链接,但请注意它有一些注意事项。从手册中引用:

为了提高效率,硬链接用于 只要源代码和 目标文件位于同一文件系统上 (注意,这仅适用于存储库数据,不适用于工作数据库。) 目录)。一些文件系统,例如 AFS, 不正确地实现硬链接,但不报告错误。在这些 在这种情况下,请使用--pull选项以避免 硬链接

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

$ cp -al REPO REPOCLONE
这是克隆的最快方法,但并不总是安全的。这个 操作不是原子的(请确保 回购协议并非如此 操作过程中的修改取决于您),您必须确保 您的编辑器会断开硬链接(Emacs) 大多数 Linux内核工具就是这样做的)。而且,这与某些特定的标准不兼容 放置元数据的扩展 在下面 .hg目录,例如mq


当你可以用60英镑获得1TB的磁盘空间时,400MB是便宜的(~2p)。

便宜和免费不一样。克隆创建了一个新的存储库,它本身就有空间成本——如果您不希望它位于磁盘上的其他位置,为什么还要麻烦克隆呢?然而,正如您所注意到的,相比之下,克隆1GB repo只会增加父目录中占用的空间约200MB,因为Mercurial足够聪明,可以识别不需要复制的信息

我认为更一般地说,你需要停止担心Mercurial(或任何DVC/VCS)如何工作的复杂性。众所周知,使用版本控制需要更多的磁盘空间和时间。随着数据量和更改数量的增加,空间和时间需求也随之增加。您没有意识到的是,版本控制的好处远远超过了这些成本。你的工作是安全的,你不会意外地把事情搞砸,能够回顾你过去的工作,以及在DVCS的情况下易于分发,这些都是非常有价值的

如果您的担忧确实超过了这些好处,那么您应该坚持使用普通文件系统,并使用FTP共享/分发/提交源代码

更新

关于romkyns的评论:你正在下载大量数据。无论数据是什么,下载大量数据都需要时间。这是无法回避的事实,Mercurial和任何其他风投公司都无法让它走得更快

然而,Mercurial和分布式模型的好处是,您只需支付一次成本。由于所有工作都是在本地完成的,因此您可以提交、还原、更新等内容,而无需任何网络开销,并且只进行网络操作以拉入和推送更改,这是相对少见的。在集中式VCS中,您必须在任何时候对源代码进行操作时进行网络操作

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


不过值得一提的是,克隆存储库并不是下载源代码的最佳方式。如果你只是想要代码库,你可以得到。还可以让您无需下载任何内容,并且您可以通过每页顶部的归档链接(bz2、zip、gz)下载任何版本的完整归档。所有这些选项都比完整克隆快。克隆存储库只需要Mozilla代码库,而不是只需要文件。

(以美元计算,1TB为88美元,400 MB为3美分)这里关注的不是空间,而是创建存储库所需的时间。制作5000份新的文件副本也会使硬盘驱动器的磁头工作起来非常困难。需要多长时间?不会那么长的。我真的不担心硬盘的负载,这对你来说可能是很多,但就像价格一样,它是微不足道的。@dimo414我已经通过宽带连接查看Firefox mozilla central三个小时了。它刚刚开始加载“文件”,所以我可能还要再呆上至少三个小时。这在我的书中肯定是“非常长”的。顺便说一句,我发现
du-sh
是一种更好的方法来计算MB大小。考虑到所需时间,它将打印406MB之类的内容-虽然
hg clone
比集中式SCM中的“签出”功能做得更多,但下载整个历史记录所需的时间可能比