
我用TortoiseHg 工作台管理本機 Windows 電腦上的儲存庫,我喜歡 TortoiseHg 如何根據我使用 GUI 進行的點擊來編寫命令。
但我只知道如何使用 TortoiseHg 來管理本機 Windows 儲存庫,而不知道駐留在 Web 伺服器上的遠端 Unix Mercurial 用戶端。
是否可以透過 SSH 建立隧道並向 Unix Web 伺服器發送命令?我想使用 TortoiseHg 在我的網頁伺服器上遠端管理儲存庫。
答案1
不,這是不可能的:您可以透過 SSH(和 HTTPS)發送的唯一「命令」是hg push
和hg 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
在每次推送到該儲存庫後運行。這意味著工作副本將使用最新文件進行更新,因此您的網頁伺服器可以向全世界提供這些文件。