2013-03-20 131 views
1

我最近將trac從0.10升級到1.0,併成功將trac實例鏈接到svn和git存儲庫。git trac post-receive hook

但是,在設置git repositories post-receive hook期間,我遇到了一些主要問題。

我試過插件腳本這裏:

http://trac-hacks.org/wiki/GitPlugin#post-receivehookscripts

但是,這並不工作,因爲git的郵寄方式收到似乎並不提供$ OLD_REV和$ NEW_REV標準輸入。

維基還提到,一個只需要調用下面

trac-admin TRAC_ENV changeset added <commitid(s)> 

所以我把Git中的後收到腳本以下,

REV=$(git rev-parse HEAD) 

trac-admin <trac-repo> changeset added <repo-name> $REV 

它不工作的大部分時間。但是,如果用戶嘗試一次推送多個提交,git rev-parse HEAD將僅檢索最後一個提交ID(而不是最後一次推送的提交ID列表),因此某些提交將從Trac中丟失(從node_change表中刪除trac db)。

我不知道是否有一些方法來獲取所有提交ID的最新git推?或者我在這裏忽略了一些東西,還有一些更微不足道的方法可以做到這一點?

感謝。

回答

2

好吧,我剛剛發現這個鏈接:

git: empty arguments in post-receive hook

這給了我很大的提示,這裏是我是如何解決這個問題

Git中的post-receive

read oldrev newrev refname 
REV=$(git rev-list $oldrev..$newrev) 
trac-admin <trac-repo> changeset added <repo-name> $REV 

ps這意味着修訂信息確實通過標準輸入傳遞給腳本,只是trac插件由於某種原因無法獲取它。

+0

你不會碰巧知道如何做到這一點在Windows上,不是嗎? – 2013-07-08 14:57:44

+0

nope,從來沒有嘗試過在Windows之前。 – 2013-07-09 02:17:43