我最近将 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 表D b)。
我想知道是否有一些方法可以获取最新 git push 的所有提交 ID?或者我实际上在这里忽略了一些东西,还有一些更简单的方法可以做到这一点?
谢谢。