從 TortoiseHg 編寫 Mercurial 命令並使用 ssh 發送到遠端 Linux

從 TortoiseHg 編寫 Mercurial 命令並使用 ssh 發送到遠端 Linux

我用TortoiseHg 工作台管理本機 Windows 電腦上的儲存庫,我喜歡 TortoiseHg 如何根據我使用 GUI 進行的點擊來編寫命令。

但我只知道如何使用 TortoiseHg 來管理本機 Windows 儲存庫,而不知道駐留在 Web 伺服器上的遠端 Unix Mercurial 用戶端。

是否可以透過 SSH 建立隧道並向 Unix Web 伺服器發送命令?我想使用 TortoiseHg 在我的網頁伺服器上遠端管理儲存庫。

答案1

不,這是不可能的:您可以透過 SSH(和 HTTPS)發送的唯一「命令」是hg pushhg pull

它們並不是真正作為“命令”發送,而是Mercurial 使用它自己的協議,該協議允許客戶端查詢遠端伺服器以獲取一些信息,例如“您有這個變更集嗎?”、“分支頭是什麼?”以及「請收下這個包裹!」。

當您使用 SSH 時,您的 Mercurial 用戶端將建立 SSH 隧道並hg serve --stdio在遠端主機上啟動。該hg serve命令就是我上面談到的 Mercurial 線路協議。 Bitbucket 等託管環境已被鎖定,因此這是僅有的您可以透過 SSH 執行命令 — 他們不希望您在他們的伺服器上執行任意命令!

至於管理遠端儲存庫你自己Web 伺服器:您需要使用 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遠端儲存庫中的檔案:它將使 Mercurialhg update在每次推送到該儲存庫後運行。這意味著工作副本將使用最新文件進行更新,因此您的網頁伺服器可以向全世界提供這些文件。

相關內容