hg clone aborts报告它在存储库中找不到.hg / store / lock

时间:2011-02-26 19:13:27

标签: mercurial

我使用以下方法在远程计算机上创建了一个存储库:

    hg init

    hg add

    hg commit

已创建存储库。

我在本地计算机上克隆了存储库,没有报告错误;文件似乎在那里

现在我正在尝试使用以下方法克隆克隆(作为工作副本)

    hg clone "path to original clone"

它返回:

目标目录:“存储库名称”

abort:没有这样的文件或目录:“原始克隆的路径”/ .hg / store / lock

我做错了什么?

由于

2 个答案:

答案 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,这实际上是等效的,除非它尽可能不使用本地硬链接。