2011-06-20 71 views
3

我試圖在Git中使用Trac。在Trac中使用Git commit消息關閉門票

  1. 我已經配置了Git的插件 - 它 正確地顯示在 「瀏覽源代碼」選項卡存儲庫和變更。
  2. 打開CommitTicketUpdater 插件,配置它:關閉 驗證,設置爲不使用任何 括號,左側關鍵字爲默認值。
  3. 增加了一些門票。
  4. 完成提交包含「close#5」的消息。

Trac看到門票號碼(在變更中它被標記爲紅色並鏈接到門票)但沒有關閉門票否5.什麼可能是錯誤的?

TIA

+0

您可以發佈您當前用於提交後掛鉤腳本的代碼嗎? – bta

+0

'/ usr/local/bin/trac-admin/home/trac/project changeset添加了「$ 1」「$ 2」' – alekwisnia

+0

@ alekwisnia-是存儲在倉庫中的'hooks/post-commit',還是在單獨的腳本「後提交」調用? – bta

回答

0

如果我按照documentation,你應該嘗試與closes #5。如果它仍然不起作用,請嘗試檢測post-commit-hook is correctly configured

#XXX是引用XXX票據的標準Trac/Wiki語法,另一方面,[YYYY]將引用YYYY提交,即使未定義任何提交後掛鉤,它也將始終工作。

一定要通過following this link

+0

很不幸,如果它不識別'關閉#5',Git提交消息標準通常使用命令式的心情。 –

+0

其實我試過文檔中列出的大多數關鍵字,包括「關閉」,「關閉」,還嘗試過「參考」,「看到」等。 – alekwisnia

+0

@alekwisnia:它似乎是後提交鉤子不正確配置或啓動 –

0

我放棄了Trac系統激活後提交鉤,切換到管理平臺。它現在更好一點 - 與給定機票的ID參考票據承諾,但再次 - 「修復#1」不關閉票號1 ... Afaik Redmine不需要掛鉤..

+0

是的,有點愚蠢,Trac需要一個運行「trac-admin TRAC_ENV changeset added」的git post-receive鉤子。它可以每隔一段時間檢查一次新的提交。 –

0

如何你使用trac存儲庫?通常情況下,您的trac運行在您推送到的服務器上。推後鉤子不會運行。

在這種情況下,您需要一個post-receive鉤子。 我對git-plugin包中的post-receive hook做了一些修改,因爲它有一些bug。 (f.ex.你只能對trac中的一張票進行一次更改/秒,所以我不得不添加一次睡眠(1),因爲當你按下所有的提交時,將會在同一秒內得到處理,而且你還可以提供一些工作小時)

這種後收到鉤可以在我的github上可以找到:https://github.com/JensTimmerman/TRAC-SVN-to-GIT-migration/blob/master/hooks/trac-post-receive-hook.py

您必須安裝這/path/to/your/.git/hooks/post-receive 和確保它是可執行的(在linux中爲chmod + x /path/to/your/.git/hooks/post-receive),並將「TRAC_ENV ='/ home/jens/tractest /'」更改爲指向您的trac環境。

編輯:

如果你不是在同一臺服務器上託管你的Git倉庫,你正在運行TRAC你可以做一個拉一個臨時混帳回購協議,並再次推到一個TRAC使用帶有cron工作左右。這將再次觸發您的真實存儲庫中的post-receive鉤子並更新trac。

我有這樣的到位:

[email protected]:~/git$ ls 
gitcron.log realrepo syncgit.sh tmprepo 

其中tmprepo只是其中i推拉並realrepo有我的位置後收到鉤。 與syncgit.sh:

cd /home/username/git/tmprepo; 
git pull; 
git push real; 

和tmprepo一套遠程 '真實' 到

[email protected]:~/git/tmprepo$ git remote -v show 
origin https://[email protected]/hpcugent/easybuild.git 
real ../realrepo/ 

,一切得到的由crontab項目同步(把這個crontab -e命令)

*/3 * * * * /hhome/username/git/syncgit.sh >> /home/username/git/gitcron.log 2>&1 
+0

這裏有一個想法:用Trac在服務器上創建一個裸克隆鏡像(帶有必要的post-receive hook)。你可以用cron作業每小時推鏡頭。 –

+0

這是一個更好的方法,使用本地回購,並在達到某種穩定表單時推送到服務器(與post-receive掛鉤)。 –

+1

是的,如果你在Trac所在的同一臺服務器上託管git repo,那就行得通了。所以我會說「不同」,而不是「更好」。 :)如果您的回購託管在其他地方(如Github),我的建議很方便。 –

0

commit_ticket_update_envelope見trac.init如果有幫助,我充滿了我的trac INI下列要求:

[機票] commit_ticket_update_commands.close =接近

的官方文件宣稱,如果你離開「commit_ticket_update_commands.close =」空,commiter更新將使用一些默認的關鍵字,以決定是否必須關閉票,但這對我不起作用。唯一可行的是在該字段中明確設置一些關鍵字,例如(commit_ticket_update_commands.close = close)