2011-01-22 18 views
0

我已經爲我的Mercurial存儲庫設置了一個簡單的changegroup掛鉤,以將該組更改通過電子郵件發送給感興趣的用戶。我想爲我管理的每個存儲庫使用單個腳本,並且還想識別更改組來自的存儲庫。根據Mercurial Hooks文檔,環境變量HG_URL可用於此目的。但是,我沒有得到什麼,我從這個變量預期:Mercurial changegroup掛鉤正在通過錯誤HG_URL

預期:

https://repo01/hg/project 

實際:

remote:https::rnideffer 

爲什麼是這樣的URL,以及如何得到我期望進入changegroup鉤子?

回答

1

changegroup鉤子不能總是告訴正在使用的遠程URL。從Hooks chapter of the Mercurial Book

如果可能的話,水銀會告訴 鉤 轉移了變更存儲庫之間 數據的活動「遠側」的位置。這是 由Mercurial在Python 參數中提供的名爲url或環境 變量名爲HG_URL。沒有評論

這些信息並不總是已知的。 如果在通過http或ssh服務的存儲庫 中調用鉤子, Mercurial無法知道遠程存儲庫的位置是 ,但它可能知道客戶端連接的位置是 。在這種 情況下,URL將採取的 下列形式之一:沒有評論

遠程:SSH:1.2.3.4的遠程ssh客戶, 在IP地址1.2.3.4。沒有評論

遠程:http:1.2.3.4-遠程http 客戶端,在IP地址1.2.3.4。如果客戶端使用的是 SSL,則此格式爲 ,其格式爲remote:https:1.2.3.4。沒有 評論

所以你被告知他們通過https從一臺名爲rnideffer的機器上推送。您是否考慮使用notify extension?它附帶了mercurial,幾乎完全符合您所描述的內容,並且可以提供必要的URL前綴以將repo名稱轉換爲所需的URL。

+0

很好的解釋。我發現PWD環境變量是由apache傳入的,並且包含磁盤上存儲庫的絕對路徑,我可以根據需要使用它。我正在使用changegroup鉤子而不是通知,因爲我需要爲每個推動的變化而不是每個變化發送電子郵件。 – purecharger

+0

很高興幫助,但NotifyExtension也修改組。它有'changegroup'和'changeset'支持。請參閱http://mercurial.selenic.com/wiki/NotifyExtension的「hooks」部分 –