假设我需要创建可以从中央存储库推送和提取的x存储库。克隆所有这些存储库与将.hg文件夹从中央存储库复制x次到空文件夹之间是否存在实际区别?
答案 0 :(得分:7)
我能想到的一个区别是副本不是原子操作:
你不能确定你正在复制的回购没有被修改。
编辑:hg clone
man page实际提及:
在某些情况下,您可以使用
的完整硬链接克隆存储库和工作目录
$ cp -al REPO REPOCLONE
这是克隆的最快方法,但并不总是安全的。
- 操作不是原子操作(确保在操作期间不会修改
REPO
取决于你)- 并且您必须确保您的编辑器断开硬链接(Emacs和大多数Linux内核工具都这样做)。
- 此外,这与将其元数据放在
.hg
目录下的某些扩展程序不兼容,例如mq
。
答案 1 :(得分:3)
另一个细微差别 - 如果您执行副本,原始存储库和新存储库将具有相同的父存储库。使用克隆,新存储库的父级将是原始的。
即。在.hg / hgrc文件的[paths]部分中。
原始存储库(/ repo / hg / original)
[paths]
default = /repo/hg/parent
已复制的存储库
[paths]
default = /repo/hg/parent
克隆存储库
[paths]
default = /repo/hg/original
答案 2 :(得分:2)
是的,有一点不同。如果两个存储库位于同一文件系统上,Clone将尝试创建硬链接。 (不幸的是,这不适用于Windows)