从 TortoiseHg 编写 Mercurial 命令并使用 ssh 发送到远程 Linux

从 TortoiseHg 编写 Mercurial 命令并使用 ssh 发送到远程 Linux

我用TortoiseHg 工作台在我的本地 Windows 机器上管理存储库,我喜欢 TortoiseHg 如何根据我使用 GUI 进行的点击来编写命令。

但我只知道如何使用 TortoiseHg 来管理本地 Windows 存储库,而不知道如何管理位于 Web 服务器上的远程 Unix Mercurial 客户端。

是否可以通过 SSH 建立隧道并将命令发送到 Unix Web 服务器?我想使用 TortoiseHg 在我的 Web 服务器上远程管理存储库。

答案1

不,这是不可能的:您可以通过 SSH(和 HTTPS)发送的唯一“命令”是hg pushhg 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 服务器可以向全世界提供这些文件。

相关内容