我用TortoiseHg 工作台在我的本地 Windows 机器上管理存储库,我喜欢 TortoiseHg 如何根据我使用 GUI 进行的点击来编写命令。
但我只知道如何使用 TortoiseHg 来管理本地 Windows 存储库,而不知道如何管理位于 Web 服务器上的远程 Unix Mercurial 客户端。
是否可以通过 SSH 建立隧道并将命令发送到 Unix Web 服务器?我想使用 TortoiseHg 在我的 Web 服务器上远程管理存储库。
答案1
不,这是不可能的:您可以通过 SSH(和 HTTPS)发送的唯一“命令”是hg push
和hg pull
。
它们实际上并不是作为“命令”发送的,相反,Mercurial 使用它自己的协议,允许客户端向远程服务器查询一些内容,例如“您有这个变更集吗?”,“分支头是什么?”和“请接受这个包!”。
当您使用 SSH 时,您的 Mercurial 客户端将建立 SSH 隧道并hg serve --stdio
在远程主机上启动。该hg serve
命令就是我上面提到的 Mercurial 有线协议。Bitbucket 等托管环境是锁定的,因此这是仅有的您可以通过 SSH 执行的命令 — 他们不希望您在他们的服务器上执行任意命令!
至于管理远程存储库你自己webserver:您需要使用 SSH 登录并在您的 Unix 服务器上创建一个空的存储库:
$ hg init my-website
然后你就可以从本地机器推送到服务器了:
$ hg push ssh://your-server.com/path/from/home-dir/to/my-website
由于您正在讨论管理网站,因此您可能需要添加
[hooks]
changegroup = hg update
到.hg/hgrc
远程存储库中的文件:每次推送到该存储库后,Mercurial 都会运行hg update
。这意味着工作副本将使用最新文件进行更新,因此您的 Web 服务器可以向全世界提供这些文件。