2012-12-11 55 views
2

我使用trac作爲我的問題跟蹤系統和svn一起使用。最近我發現提交消息也可以使用分佈式CommitTicketUpdater(出現在tracopt中)從trac 0.12(我使用的版本)開始修改票證(添加註釋,關閉它們)。讓CommitTicketUpdater在svn的trac中工作

這是安裝在Ubuntu 12.04上。我的提交後代碼非常簡單:

REV="$2" 
/usr/bin/trac-admin /var/trac/proj changeset added robo $REV 

其中'robo'是我的存儲庫的名稱,如trac中所定義。這實際上工作得很好;變更集以及在svn commit期間寫入的提交消息一起出現在trac中。問題不在這裏。

插件(http://trac.edgewall.org/wiki/CommitTicketUpdater)應該在提交信息中查找諸如「請參閱#22」或「修復#23」等字符串,並更新/關閉相關故障單。這在語法上非常靈活。我已經從admin web選項卡啓用了插件(和應用的更改),甚至嘗試升級(儘管不需要升級)。

我已經在我的trac.ini文件,以便配置[票]下的插件:

commit_ticket_update_envelope = 
commit_ticket_update_commands.close = close closed closes fix fixed fixes 
commit_ticket_update_commands.refs = <ALL> 
commit_ticket_update_check_perms = false 
commit_ticket_update_notify = false 

,但我已經嘗試了很多其他的變化,包括一些評論,這些線。我也試着把[]放在信封選項中,但是沒有改變。

底線是,雖然添加了變更集,但票證中沒有任何變化。

我在想這可能是一個權限問題。因此,我將TRAC_ADMIN添加爲匿名,但這並沒有改變任何內容。我意識到我不確定trac如何處理linux用戶;他們不會以任何方式向Web服務器進行身份驗證......但還有其他方法可以完成嗎?

所以我已經與根,並且它的工作。所以這是關於linux權限的。雖然,我的用戶屬於'svn'組,它擁有對我的項目文件夾的全部寫入權限。但這並不足夠,但是,以作爲的工作。

我的下一個方向是將自己(和任何其他提交者)添加到sudoers中,並且沒有該鉤子操作的密碼。我已經添加了'hansz debi = NOPASSWD:/ usr/bin/trac-admin'(其中debi是服務器名稱,hansz是我的用戶名),並修改了提交後的行:

sudo -u root /usr/bin/trac-admin /var/trac/proj changeset added robo $REV 

這並沒有幫助。作爲根作品,並作爲我自己 - 不是。

這是我停止嘗試,並尋求你的幫助。

+0

爲了正確:您關於CommitTicketUpdater功能外觀的初始斷言是錯誤的。它已經存在很久了 - 也就是我已經在0.10dev中看到它了。 – hasienda

回答

2

CommitTicketUpdater需要變更集的作者進行權限檢查(並且無論如何您都禁用了權限檢查)。它不使用UNIX用戶進行任何操作。

給予TRAC_ADMINanonymous也不會做任何事情,因爲身份驗證的用戶繼承authenticated,不anonymous權限。

以root用戶身份運行trac-admin $ENV changeset added時更新故障單工作的事實確實指向(文件系統)權限問題。爲什麼它不適用於sudo有點神祕。請注意,運行trac-admin的用戶需要對所有Trac環境的讀寫權限。

是否使用存儲庫類型svn作爲存儲庫或svn-direct?在後一種情況下,即使您沒有寫入環境的權限,變更集也會出現在Trac中。

我建議把你的日誌級別改爲DEBUG,看看日誌是否告訴你任何東西。我還建議加入trac用戶郵件列表並在那裏詢問。您將接觸到更多熟悉Trac設置的人員。此外,SO是提出問題的絕佳平臺,但它不適合調試安裝。

+0

你好雷米,我感謝你的回答。刪除'trac.ini'文件以某種方式解決了問題。我不知道爲什麼,因爲舊的配置文件不見了。無論如何,我會考慮加入郵件列表以進一步調試問題。 – Bach