【问题标题】:Mercurial: remote: abort: There is no Mercurial repository here (.hg not found)!Mercurial:远程:中止:这里没有 Mercurial 存储库(未找到.hg)!
【发布时间】:2012-01-19 14:14:06
【问题描述】:

所有,

这个问题我找了很久,尝试了不同的方法。

我想仅通过 SSH 在服务器上维护我的代码。但是当我运行这个时:

sudo hg clone -v ssh://carl@hostname//home/carl/Java/Projects/peta/

Mercurial 一直告诉我remote: abort: There is no Mercurial repository here (.hg not found)!。有些文章说路径应该是正确的,那里应该有一个.hg目录。但我已经检查了好几次,我确信在正确的位置有一个.hg 文件夹。

我也试过了

hg --config ui.remotecmd=/usr/bin/hg clone ssh://carl@hostname//home/carl/Java/Projects/peta/

但它也失败了。可能还有什么问题?谢谢。


已解决

我终于解决了这个问题。以前,我在本地机器上创建了一个存储库,并将所有文件(包括.hg)scp 到服务器上。我尝试先删除.hg 目录,然后通过ssh (hg init) 在服务器上创建一个repo。然后hg clone 工作!

【问题讨论】:

  • 在 /home/carl/Java/Projects/peta/ 是否有 mercurial 存储库(不仅是 .hg 文件夹)?你可以从那里运行hg log 吗?
  • 如果您在 windows 上有 hg 服务器并运行 cygwin ssh 服务器,请尝试 ssh://myuser@machinex.com/D:/repos 而不是 ssh://myuser@machinex.com//cygdrive/d/repos

标签: mercurial ssh


【解决方案1】:

从hg help urls提取

关于在 Mercurial 中使用 SSH 的一些注意事项:

  • SSH 需要目标计算机上的可访问 shell 帐户,并且 远程路径中的 hg 副本或使用 remotecmd 指定。
  • path 默认相对于远程用户的主目录。使用 路径开头的额外斜杠以指定绝对路径:

    ssh://example.com//tmp/repository

这意味着,至少,您不能使用相同的 URI 并且只更改一个/两个斜杠:至少一个路径将不存在。

引用和错误消息的后果:您必须调试(使用任何 ssh 工具)并找到所需目录的正确路径。你可以:

  • 使用 scp (f.e) 并从已知位置复制已知文件
  • 在交互式会话中通过 SSH 连接到远程主机并手动验证路径(两者?),即:ssh ...、cd ...、pwd、验证 pwd 的输出
  • ...任何其他调试器

当您在登录后获得良好路径时,您必须检查下一个故障点 - .hg 目录权限

在验证这些检查点后,您将获得克隆并以理解“之前发生的事情”的形式获得一些奖励

HTH

【讨论】:

    【解决方案2】:

    我不知道这是否真的有帮助,但根据FAQ:

    hg clone ssh://USER@REMOTE/path/to/repo
    

    他们在USER@HOST 之后只使用了一个/。或许你可以试试。

    【讨论】:

    • 谢谢。但是我已经试过了,还是不行。我想知道我是否应该在服务器上做一些配置?
    • 我也试过了,塞萨尔。它不起作用......这就是为什么我对此如此疯狂......
    • 真心希望你能做到!解决方法:您始终可以将存储库从远程主机(ssh 主机)推送到 Bitbucket (bitbucket.org)。然后通过 http 从您的本地计算机克隆该存储库:) 我一直这样做。干杯
    • 我终于解决了这个问题。以前,我在本地计算机上创建了一个存储库,并将所有文件(包括 .hg)scp 到服务器上。我尝试先删除 .hg 目录,然后通过 ssh (hg init) 创建一个 repo。然后就可以了!
    【解决方案3】:

    César Bustíos 的答案几乎是正确的,但它试图从远程克隆到本地。相反,我们必须添加本地路径。如果是当前目录,则为点。

    hg clone . ssh://USER@REMOTE/path/to/repo
    

    希望对您有所帮助。 :)

    【讨论】:

      【解决方案4】:

      在 Debian 上运行,为了解决我的问题,我在 /var/lib/mercurial-server/.mercurial-server 配置文件的 [paths] 之后添加了以下行

      [paths]
      / = ~/repos
      ...
      

      之后别忘了发出这个命令:sudo -u hg /usr/share/mercurial-server/refresh-auth

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-26
        • 1970-01-01
        • 1970-01-01
        • 2019-10-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多