嗯,是的,没有。
我知道你的问题表明你正在使用远程存储库作为源,但问题的标题有点宽泛,所以我正在回答更广泛的问题。
看似明显的最终结果是一样的。尽管这两个仓库中的文件不是二进制相同的(请注意,我不是在谈论跟踪的文件,我在谈论Mercurial用来跟踪这些文件的“数据库”),历史记录,变更集等都是一样的。
所以在这方面,是的,这两个似乎做同样的事情。
但是,他们以不同的方式做到这一点。
如果你这样做:
hg clone REMOTE_URL
hg init && hg pull REMOTE_URL
再有就是没有真正的区别。
但是,如果你这样做:
hg clone LOCAL_PATH
hg init && hg pull LOCAL_PATH
(注意,这个克隆/拉从另一个存储库已经在你的硬盘上)
再就是可能的差异。如果可能,本地克隆将使用存储库的硬链接。换句话说,你并没有为存储库中的所有文件创建一个新的独立副本,而是为它们创建了磁盘上的新链接,这些链接运行得非常快,并且几乎不需要空间。
然后,当你开始修改历史,即。提交新的变更集,这些文件将被取消链接,并按照需求进行完整复制。
请注意,确切的启发式文件,它不会做这样的硬链接是我不知道的。您可以在Mercurial wiki,Hardlinked Clones中阅读有关此功能的更多信息。
拉不会做到这一点。它将从其他存储库中读取并在目标存储库中创建/更新新文件。这需要更多时间和更多的磁盘空间。
所以总结:
hg clone LOCAL_PATH
可以占用更少的磁盘空间,并运行一大堆比hg init && hg pull LOCAL_PATH
- 更快如果你克隆/从远程仓库拉,没有真正的差异
+1击败我。 **:)** - Vaibhav可能需要执行'hg update --clean'。 –
谢谢!!!!我一直在寻找如何禁用hg克隆的默认路径。 –