在Windows环境中通过http克隆Mercurial存储库时,我得到以下输出:
hg clone http:/myserver/hg/repo hgcopy
requesting all changes
adding changesets
adding manifests
adding file changes
added xxx changesets with xxx changes to 92985 files
updating to branch default
92985 files updated, 0 files merged, 0 files removed, 0 files unresolved
克隆文件系统,即通过共享网络驱动器,提供完全不同的输出:
c:\Hg>hg clone \\server\Hg\Repo c:\Hg\Repo
copying [ <=> ] 23712
updating to branch default
92985 files updated, 0 files merged, 0 files removed, 0 files unresolved
最后一次操作速度提高了3倍,但在远程仓库中创建了一个锁定文件,无法从另一个系统启动第二个克隆。 Mercurial docs about Locking Design没有透露太多关于它的信息:
如果阅读器无序读取文件,可能会出现问题。例如,在提取或提交期间使用其他工具(例如rsync)复制存储库可能导致复制更改日志指的是不在副本中的清单条目。
那么,克隆文件系统时会出现什么样的机制?
答案 0 :(得分:1)
那些不是堆栈跟踪,它们只是普通输出。
Mercurial在使用&#34;快速复制&#34;时锁定源存储库。通过复制或硬链接精确克隆因为这不会使用较慢的&#34; pull协议&#34;。你可以运行:
hg clone --pull \\server\Hg\Repo c:\Hg\Repo
强制Mercurial无论如何都要使用pull协议:有关详细信息,请参阅hg help --verbose clone
。这将比直接复制慢,但可能不如通过http
或https
克隆那么慢(因为HTTP需要通过Web服务器传递所有数据)。