我想在Windows IIS服務器上的遠程存儲庫(使用hgweb)上設置鉤子。我遇到的問題是,存儲庫在hgweb的配置文件中被指定爲UNC路徑,掛鉤使用cmd.exe不支持的UNC路徑執行cmd.exe。在Mercurial中指定掛鉤時可以指定Windows shell嗎?
是否可以指定一個不同的shell來運行?
我想在Windows IIS服務器上的遠程存儲庫(使用hgweb)上設置鉤子。我遇到的問題是,存儲庫在hgweb的配置文件中被指定爲UNC路徑,掛鉤使用cmd.exe不支持的UNC路徑執行cmd.exe。在Mercurial中指定掛鉤時可以指定Windows shell嗎?
是否可以指定一個不同的shell來運行?
據我所知,你不能告訴水銀在Windows上使用不同的外殼程序(但我認爲你可以在Linux主機上)
相反,你可以有你的鉤子腳本調用出來的不同的外殼並且具有那個外殼執行另一個腳本或一組命令。這很麻煩,但不幸的是Windows不知道是否擁有強大的腳本支持,尤其是與基於* nix的平臺相比。
水銀hooks can be defined two ways,
,然後你顯然會擁有python的全部功能來完成任務。當然,沒有任何理由不能用任何語言編寫程序,並從你的外部鉤子執行它,因爲cdeszaq暗示
使用進程內python鉤子的另一個好處是它是跨平臺的,所以如果你切換到非Windows平臺,你不必重寫你的鉤子腳本。 – cdeszaq 2012-01-18 16:00:41
問題似乎是,使用外部鉤子時,Mercurial會從cmd.exe啓動這些內容 - 至少當我嘗試調用「hg update」(以獲取遠程repo在傳入鉤子上更新)時,它會運行cmd.exe。 – 2012-01-20 10:04:57
@LeeAtkinson - 然後使用python鉤子,因爲它不會在外部cmd進程中運行,並且會在與hg本身相同的內部進程中運行。 – cdeszaq 2012-01-20 13:37:29
或者你可以把它寫成python鉤子 – 2012-01-18 15:44:16
@jk - 做出正確的答案..這是這個問題的正確答案。我只是一個解決方法。 – cdeszaq 2012-01-18 15:46:20
好的,但我認爲運行另一個程序/腳本的外部鉤子也是完全有效的 – 2012-01-18 15:55:07