【发布时间】:2013-03-20 09:44:00
【问题描述】:
我最近将 trac 从 0.10 升级到 1.0,并成功将 trac 实例链接到 svn 和 git 存储库。
但是,在设置 git 存储库 post-receive 挂钩期间,我遇到了一些重大问题。
我在这里尝试了插件脚本:
http://trac-hacks.org/wiki/GitPlugin#post-receivehookscripts
但这不起作用,因为 git post receive 似乎没有在标准输入中提供 $OLD_REV 和 $NEW_REV。
wiki上也提到,只需要调用如下
trac-admin TRAC_ENV changeset added <commitid(s)>
所以我把以下内容放在git的post-receive脚本中,
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 表)。
我想知道是否有一些方法可以获取最新 git push 的所有提交 ID?或者我实际上在这里忽略了一些东西,还有一些更简单的方法可以做到这一点?
谢谢。
【问题讨论】:
标签: git trac git-post-receive