Mercurial:hg-checklinks- NFS / SAMBA / SSHFS网络驱动器上的递归符号链接

时间:2011-03-06 22:23:30

标签: macos mercurial sshfs

当我进入我的ubuntu VM,然后从bitbucket克隆一些东西 - 然后尝试在其上执行commit / export / etc时,我得到一个名称前缀为'hg-checklinks - '的文件夹。< / p>

在检查时,似乎将一个永无止境的符号链链接回到其父文件夹。这让我完全疯了,到目前为止,我已经失去了对善变的信念。

请注意,当我在本地文件夹上使用它时似乎工作正常。有没有人知道如何解决这个问题...或者更多关于它为什么会发生的信息?

干杯!

3 个答案:

答案 0 :(得分:4)

DVCS的分散部分是关于在本地运行它 - 应该在本地系统以外的任何其他地方进行的唯一Mercurial操作是pushpull,和clone。如果你从bitbucket克隆到你的Ubuntu VM上,你应该从你的Ubuntu VM克隆到你的mac并推送到Ubuntu VM。

也就是说,看起来你的网络FS没有正确删除文件。这是相关代码(在此处找到:https://www.mercurial-scm.org/repo/hg/file/a2dc8819bb0d/mercurial/util.py#l710):

name = tempfile.mktemp(dir=path, prefix='hg-checklink-')
try:
    os.symlink(".", name)
    os.unlink(name)
    return True
except (OSError, AttributeError):
    return False

因此,您的网络FS正在创建符号链接,但无论如何都会抛出异常,或者在要求删除(取消链接)符号链接时抛出异常。

答案 1 :(得分:1)

我使用Mac OS x Lion上此链接的解决方案修复此问题

http://blog.philippklaus.de/2011/07/sshfs-on-mac-os-x-10-6-8-with-fuse4x/

答案 2 :(得分:0)

这里的问题是sshfs非常特殊的“-o follow_symlinks”,它会愉快地创建符号链接,然后声称它无法创建它们,然后将它们显示为令人敬畏的递归不可移动目录。 Macfusion中的错误(https://code.google.com/p/macfusion/issues/detail?id=284)可能会自动打开此中断选项。所以如果有的话,你应该在sshfs和Macfusion中“失去信心”,而不是Mercurial。

这将在Mercurial 2.7中解决。在此期间,您应该能够在没有选项的情况下手动运行sshfs。

(对于更快的错误修复,请向Mercurial / sshfs / macfusion项目报告错误,而不是随机的互联网问题论坛。)