Mercurial:remote:abort:这里没有Mercurial存储库(找不到.hg)!

时间:2011-12-13 17:47:49

标签: mercurial ssh

所有

我已经长时间搜索这个问题并尝试了不同的方法。

我想通过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有效!

4 个答案:

答案 0 :(得分:29)

hg help urls

中提取
  

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

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

         

    SSH://example.com//tmp/repository

  •   

这至少意味着你不能使用相同的URI 并且只改变一两个斜杠:至少有一条路径不存在。

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

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

如果您在登录后获得良好的路径,则必须检查下一个故障点 - .hg dir权限

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

HTH

答案 1 :(得分:1)

根据FAQ

,我不知道这是否真的有帮助
hg clone ssh://USER@REMOTE/path/to/repo

他们在/之后仅使用一个USER@HOST。也许你可以这样试试。

答案 2 :(得分:0)

CésarBustíos的答案几乎是正确的,但是它试图从远程克隆到本地。相反,我们必须添加本地路径。在它是当前目录的情况下,它将是一个点。

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

希望它有所帮助。 :)

答案 3 :(得分:0)

在Debian上运行,为了解决我的问题,我在/var/lib/mercurial-server/.mercurial-server

后面的[paths]配置文件中添加了以下行
[paths]
/ = ~/repos
...

之后不要忘记发出此命令:sudo -u hg /usr/share/mercurial-server/refresh-auth