【发布时间】:2016-11-22 17:02:03
【问题描述】:
在 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)复制存储库可能会导致复制更新日志,该更新日志引用不在副本中的清单条目。
那么,在文件系统上进行克隆时会发生什么样的机制?
【问题讨论】: