我使用以下方法在远程计算机上创建了一个存储库:
hg init
hg add
hg commit
已创建存储库。
我在本地计算机上克隆了存储库,没有报告错误;文件似乎在那里
现在我正在尝试使用以下方法克隆克隆(作为工作副本)
hg clone "path to original clone"
它返回:
目标目录:“存储库名称”
abort:没有这样的文件或目录:“原始克隆的路径”/ .hg / store / lock
我做错了什么?
由于
答案 0 :(得分:3)
在主存储库所在的分区上使用了哪些文件系统?
实际上,当Mercurial正在进行某些操作时,它需要锁定存储库。为此,它会在.hg存储库中创建一个指向不存在文件的符号链接,当文件系统支持它时,告诉其他所有进程此时无法修改存储库。当文件系统不支持符号链接时,会创建一个普通文件。
但是,某些FUSE文件系统存在一些问题,通常是启用了follow_symlinks选项的SSHFS。 FUSE报告他知道符号链接,但由于SSHFS遵循符号链接且文件不存在,因此链接的“状态”标记为未知,因此Mercurial认为存储库未正确锁定并中止操作。
我看到你正在使用Cygwin,所以也许它与Windows文件系统上为UNIX设计的工具有同样的问题。这是一个奇怪的,我的同事通过Cygwin正好使用Mercurial。
我不知道你是否属于这种情况,但我在这个问题上失去了近半天。也许这个答案可以帮助将来的某些人。
答案 1 :(得分:1)
请粘贴失败的实际命令和输出,包括您要克隆的克隆的实际路径。当您执行克隆时,也使用--debug
和--traceback
。
作为一种解决方法,您可以随时尝试hg init newclone
后跟hg pull -R newclone pathtooriginalclone
,这实际上是等效的,除非它尽可能不使用本地硬链接。