2013-02-07 109 views
0

通過IIS在Windows窗口託管Mercurial。自動化Hg通知配置更新

我有,我把我所有的回購的根目錄

d:\repos 
    - ProjectA 
     - .hg 
      - hgrc 
    - ProjectB 
     - .hg 
      - hgrc 
    - ProjectC 
     - .hg 
      - hgrc 

所有回購hgrc文件設置的通知擴展用:

配置= d:\汞柱\庫\ NotificationList .TXT

這樣,我有一個單一的文件來管理所有的通知收件人,像維基描述: https://www.mercurial-scm.org/wiki/NotifyExtension

但是wiki提到通過它自己的存儲庫來控制NotificationList.txt文件?我怎樣才能做到這一點?如果我在d:\ repos \ HgNotify上創建一個單獨的repo,並在其中具有NotificationList.txt文件,則用戶可以更改,提交和推回,但是當發生推送時,NotificationList.txt不會在hg服務器上得到更新。

有沒有辦法更新該文件?我錯過了我的Hg服務器上的一個關鍵設置嗎?或者我需要使用推後鉤來部署該文件嗎?

更新1

我加了蒂姆的回答細節,我一直得到HTTP 500:服務器錯誤就推。我終於弄清楚如何跟蹤蟒蛇電話(python -m win32traceutil),這裏是什麼似乎是這個問題:

File "C:\Python27\lib\site-packages\mercurial\util.py", line 402, in hgexecutable 
exe = findexe('hg') or os.path.basename(sys.argv[0]) AttributeError: 'module' object has no attribute 'argv' 

這似乎並不能夠找到hg.exe。

更新2

我安裝TortoiseHg並重新啓動系統。現在,我得到: 表情:新增1名的變更與1變到1文件 遠程:通知:發送1個用戶1變爲 遠程:警告:changegroup.update鉤與狀態退出1

所以這讓被認爲是找到了hg.exe,但它沒有做它的工作,因爲文件沒有更新

更新3

找到我這裏的解決方案:https://stackoverflow.com/a/8023594/698

我結束了使用命令行是:

changegroup = cmd /c hg update 

我還補充說: [UI] 調試=真

要我hgrc。這兩個結合給了我更多有意義的信息。最後我看到「訪問被拒絕」。我給了用戶完全權限,但我不確定爲什麼給予IUSR完全權限不起作用。我稍後必須深入研究的內容。

回答

1

在包含您的通知列表中,您需要添加一個changegroup鉤服務器回購:

[hooks] 
changegroup.update = hg update -C 

,或者如果你想確保資源庫始終是乾淨的:

[extensions] 
purge = 

[hooks] 
changegroup.update = hg update -C && hg purge --all 
+0

這是我得到的時候我推:HTTP錯誤:500(內部服務器錯誤) [命令返回代碼255 Thu Feb 07 13:02:53 2013]。我不知道該在哪裏查看更多細節。 – slolife

+0

你是否只通過changegroup掛鉤獲得這個?如果是這樣,請添加'--traceback'選項:'changegroup.update = hg --traceback update -C'。這可能是因爲您正在使用Web服務器進行回購 - 它可能沒有權限執行更新。我建議尋找[mercurial-server](https://www.lshift.net/mercurial-server.html)。 –

+0

我添加了changegroup.update = hg --traceback update -C,但沒有看到任何更多的細節。看到我的更新1關於找不到hg.exe – slolife