过了一段时间,我终于让 trac 与 git 连接起来,但现在我在设置 post-receive 钩子时遇到了问题。
我的 git 用户属于 www-data 组,www-data 也属于 git 组。但问题是,post-receive 钩子使用以下代码(python)来调用 trac-admin:
args = [TRAC_ADMIN, TRAC_ENV, 'changeset', 'added', REPO_NAME] + commits
call(' '.join(args), shell = True)
在 shell 中调用以下命令:
/usr/bin/trac-admin /var/lib/trac/MyTrac changeset added /home/git/repositories/mynewrepo.git/ 372ba439b9fa430c932095de608cb084d6ab98eb
但是当我转到 trac 并找到应由已完成的提交引用的票证时,我什么也没得到。
但更奇怪的是,如果我只是复制该调用并在终端中运行它(在服务器中),然后票证就会更新。
我再次测试,这一次,我做了一个新的提交,并且再次没有更新票,然后在服务器上完成:
su git
然后拨打了指挥中心,发现没有更新任何票证……然后,使用 root 调用它可以让它工作...
那么,这里发生什么事了?为什么我的 git 用户可以调用 trac-admin?
我不知道这是否是问题的一部分,但是当我运行哪个 trac-admin 时,我得到:
/usr/bin/trac-admin
这是根。
那么我该如何让 git 用户调用 trac-admin 呢?
谢谢
答案1
所以,最终我无法完成这项工作,因此我设法从头开始重新安装所有内容。
当我安装 trac 时,没有使用apt-get 安装 trac,我下载了来源:github(trac 0.12)并从那里安装它(也带有要求)。
完成此操作后,我使用“哪个 trac-admin”检查了 trac-admin 在哪里,它给了我:
/usr/local/bin/trac-admin
安装和配置完成后,一切都运行正常。
所以我认为 apt-get install 不是在 trac 中执行操作的好方法。
希望这对可能遇到此问题的任何人有所帮助。
OBS:我在 github 上保存了安装 apache2+trac+git+hooks 的脚本,如果有人想使用,这里是链接:https://github.com/arruda/TRAC-GIT-HOOKS