所有
我已经长时间搜索这个问题并尝试了不同的方法。
我想通过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
有效!
答案 0 :(得分:29)
从hg help urls
关于在Mercurial中使用SSH的一些注意事项:
- SSH需要目标计算机上的可访问shell帐户 远程路径中的hg副本或使用remotecmd指定。
默认情况下,路径相对于远程用户的主目录。用一个 在路径开头指定绝对路径的额外斜杠:
SSH://example.com//tmp/repository
这至少意味着你不能使用相同的URI 并且只改变一两个斜杠:至少有一条路径不存在。
引用和错误消息的后果:您必须进行调试(使用任何ssh-tool)并找到所需目录的正确路径。你可以:
如果您在登录后获得良好的路径,则必须检查下一个故障点 - .hg dir权限
在对这些检查点进行验证后,您将获得克隆并以理解“之前发生的事情”的形式获得一些奖励
HTH
答案 1 :(得分:1)
答案 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