gpt4 book ai didi

mercurial - 通过 SSH 访问 Mercurial 存储库

转载 作者:行者123 更新时间:2023-12-01 12:53:14 27 4
gpt4 key购买 nike

我可以使用 hgweb.cgi 通过 http://成功访问存储库:

$ hg clone http://mydomain.com/scgi-bin/hgweb.cgi/myrepo

我也可以使用密码成功通过 ssh 进入 mydomain.com。

$ ssh myname@mydomain.com
myname@mydomain.com's password: xxxxxx
Last login: Sat Jun 9 .....
myname@mydomain.com [~]# ls public_html/scgi-bin
./ ../ hgweb.cgi*, hgweb.config

但是我无法推断出如何通过 SSH 为存储库提供服务。例如,这不起作用:

$ hg clone ssh://myname@mydomain.com/public_html/scgi-bin/hgweb.cgi/myrepo
myname@mydomain.com's password: xxxxx
remote: stdin: is not a tty
remote: bash: hg: command not found
abort: no suitable response from remote hg!

我的结论是,与 http://不同,ssh://不知道如何运行 cgi 脚本,这样对吗?有解决办法吗?

(顺便说一句:这是在共享主机上,其中 http 的根是 public_html/,ssh 的根是一个目录。)

最佳答案

HTTP 与 SSH 不同。 HTTP 是一种无状态的、基于请求的传输协议(protocol)。 SSH 是一种在两台机器之间建立永久的、有状态的连接的协议(protocol)。

您的 HTTP URL 看起来像是一个存储库的完整路径,但它通过一个正在执行 hgweb.cgi 脚本的 Web 服务器,并将其作为参数传递给 myrepo。 hgweb.cgi 脚本在服务器上针对 myrepo 存储库运行 Mercurial(它从服务器上的配置文件中提取实际位置)。命令链如下所示:

Local Mercurial -> HTTP -> Web Server -> hgweb.cgi > Server Mercurial

您在第二个示例中使用的 SSH URL 告诉 Mercurial 以 myname 登录到 mydomain.com 服务器,它可以在 找到存储库>/public_html/scgi-bin/hgweb.cgi/myrepo。最有可能的是,那不是您的 repo 协议(protocol)所在的位置。命令链如下所示:

Local Mercurial -> SSH -> Server file system

您需要更改 SSH URL 以使用服务器上存储库的绝对路径:

hg clone ssh://myname@mydomain.com/path/to/myrepo

看起来服务器也找不到 Mercurial 可执行文件。

关于mercurial - 通过 SSH 访问 Mercurial 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10961444/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com