- 我配置了Git插件 - 它在“浏览源”选项卡中正确显示存储库和更改集。
- 打开CommitTicketUpdater插件,进行配置:关闭身份验证,设置不使用任何括号,将关键字保留为默认设置。
- 添加了一些票据。
- 完成包含“close#5”的消息的提交。
Trac看到票号(在更改集中标为红色并链接到票号),但未关闭第5号票。可能出了什么问题?
TIA
你是如何使用trac仓库的?通常情况下,你需要在一个服务器上运行trac,并将代码推送到该服务器。由于push后并不会运行post-commit hook,因此此时需要一个post-receive hook。
我对git-plugin包中的post-receive hook进行了一些修改,因为它存在一些bug(例如,在trac中只能每秒钟更改一个ticket,因此我必须添加sleep(1),以防止所有提交都在同一秒钟内被处理。同时,你也可以提供工作小时数)。
这个post-receive hook可以在我的github上找到:https://github.com/JensTimmerman/TRAC-SVN-to-GIT-migration/blob/master/hooks/trac-post-receive-hook.py
你需要将此hook安装到/path/to/your/.git/hooks/post-receive,并确保其可执行(chmod +x /path/to/your/.git/hooks/post-receive for linux),并将"TRAC_ENV = '/home/jens/tractest/'"更改为指向你的trac环境。
编辑:
如果您的git存储库不在与trac运行的同一台服务器上,您可以将其拉到临时git存储库中,然后使用cron作业将其推回trac使用的存储库。这将再次触发真实存储库上的post-receive钩子并更新您的trac。
我已经做好了这个:
a64609@chaos:~/git$ ls
gitcron.log realrepo syncgit.sh tmprepo
其中tmprepo只是我拉取和推送的位置,而realrepo具有我的post-receive钩子。 使用syncgit.sh:
cd /home/username/git/tmprepo;
git pull;
git push real;
而且tmprepo的远程'real'设置为
a64609@chaos:~/git/tmprepo$ git remote -v show
origin https://JensTimmerman@github.com/hpcugent/easybuild.git
real ../realrepo/
而且所有的东西都会通过 crontab 条目同步(将其放入 crontab -e 中)
*/3 * * * * /hhome/username/git/syncgit.sh >> /home/username/git/gitcron.log 2>&1
closes#5
。如果仍然无法工作,请检查后提交挂钩是否正确配置。
#XXX
是标准的Trac / Wiki语法,用于引用XXX票证,而[YYYY]
将引用YYYY提交,即使没有定义后提交挂钩,它也总是有效的。date >> /home/username/hook.log
(请确保列出的文件可由所有用户进行写入)。这将在每次运行挂钩时向指定的日志文件添加时间戳。进行测试提交并查看是否记录了新的时间戳。 - bta我放弃了Trac,转而使用Redmine。现在好了一点——提交与给定的票证ID引用到票证,但是,“fixes #1”仍然不能关闭1号票证……据我所知,Redmine不需要钩子。
我曾经遇到过同样的问题。Git CommitTicketUpdater 插件似乎默认需要在术语周围加上方括号,例如 [closes #5]。此外,请参阅此 博客文章 中的 trac.init 以获取 commit_ticket_update_envelope
。
/usr/local/bin/trac-admin /home/trac/project changeset added "$1" "$2"
- alekwisniahooks/post-commit
中吗?还是在一个被post-commit
调用的单独脚本中? - bta.git/hooks/post-commit
中(因此在存储库内部)。 - alekwisnia