复制.hg文件夹和使用克隆有什么区别?

时间:2011-03-09 07:15:44

标签: mercurial

假设我需要创建可以从中央存储库推送和提取的x存储库。克隆所有这些存储库与将.hg文件夹从中央存储库复制x次到空文件夹之间是否存在实际区别?

3 个答案:

答案 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)