0

当我 macfusion 到我的 ubuntu 虚拟机中,并 hg 从 bitbucket 克隆一些东西 - 然后尝试在其上执行提交/导出/等操作时,我得到一个添加了名称前缀“hg-checklinks-”的文件夹。

经过检查,它似乎包含一个永无止境的符号链接链回到其父文件夹。这让我彻底疯了,到目前为止,我已经对 mercurial 失去了信心。

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

干杯!

4

2 回答 2

4

DVCS的分散push部分是关于在本地运行它——除了本地系统之外,唯一应该在任何东西上执行的 Mercurial 操作是pull、、和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 正在创建符号链接但无论如何都会抛出异常,或者在被要求删除(取消链接)符号链接时抛出异常。

于 2011-03-07T04:42:23.697 回答
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 项目,而不是随机的互联网问题论坛。)

于 2013-07-29T20:14:49.520 回答