使用Git提交消息关闭Trac中的票证

使用Git提交消息关闭Trac中的票证,git,trac,Git,Trac,我尝试将Trac与Git一起使用 我已经配置了Git插件-它 在中显示存储库和变更集 “浏览源”选项卡是否正确 已打开CommitCheckUpdater 插件,配置为:关闭 身份验证,设置为不使用任何 括号,左键为默认值 加了一些票 完成了包含“关闭#5”消息的提交 Trac看到票证号(在变更集中它被标记为红色并链接到票证),但不关闭5号票证。可能有什么问题 TIA如果我遵循,您应该尝试使用关闭#5。如果仍然不起作用,请尝试检测是否存在故障 #XXX是引用XXX票证的标准Trac/Wiki语法

我尝试将Trac与Git一起使用

  • 我已经配置了Git插件-它 在中显示存储库和变更集 “浏览源”选项卡是否正确
  • 已打开CommitCheckUpdater 插件,配置为:关闭 身份验证,设置为不使用任何 括号,左键为默认值
  • 加了一些票
  • 完成了包含“关闭#5”消息的提交
  • Trac看到票证号(在变更集中它被标记为红色并链接到票证),但不关闭5号票证。可能有什么问题

    TIA

    如果我遵循,您应该尝试使用
    关闭#5
    。如果仍然不起作用,请尝试检测是否存在故障

    #XXX
    是引用XXX票证的标准Trac/Wiki语法,另一方面,
    [yyy]
    将引用YYYY提交,即使未定义提交后挂钩,它也将始终有效


    请确保通过

    激活提交后挂钩。我放弃了Trac,切换到了Redmine。现在好一点了-使用给定的票证Id引用提交到票证,但是“修复#1”不会关闭票证编号1。。。
    Afaik Redmine不需要挂钩。

    您如何使用trac存储库?通常,您的trac运行在您推送到的服务器上。post commit挂钩在推送后不会运行

    在这种情况下,您需要一个post接收挂钩。 我对git插件包中的post-receive钩子做了一些更改,因为它有一些bug。(例如,您只能在trac中每秒更改一次票证,因此我必须添加一个睡眠(1),因为当您推送时,所有提交都将在同一秒内得到处理。您还可以提供一定数量的工作时间)

    可以在my github上找到此post接收挂钩:

    您必须将其安装到/path/to/your/.git/hooks/post-receive 并确保它是可执行的(在linux中为chmod+x/path/to/your/.git/hooks/post-receive),并将“TRAC_-ENV=”/home/jens/tractest/”更改为指向您的TRAC环境

    编辑:

    如果您没有在运行trac的同一台服务器上托管git存储库,您可以拉到临时git repo,然后再推到trac使用cron作业的位置。这将再次触发真实存储库上的post-receive钩子,并更新您的trac

    我已经准备好了:

    a64609@chaos:~/git$ ls
    gitcron.log  realrepo  syncgit.sh  tmprepo
    
    其中TMPREP只是我拉和推的位置,realrepo有我的post接收挂钩。 使用syncgit.sh:

    cd /home/username/git/tmprepo;
    git pull;
    git push real;
    
    tmprep的远程“real”设置为

    a64609@chaos:~/git/tmprepo$ git remote -v show
    origin  https://JensTimmerman@github.com/hpcugent/easybuild.git
    real    ../realrepo/
    
    所有内容都通过crontab条目同步(将其放在crontab-e中)


    我也有同样的问题。git插件似乎希望在默认情况下使用方括号括起来,比如[closes#5],另请参见此

    中提交票据更新信封的trac.init,如果有帮助,我用以下内容填充我的trac ini:

    [门票] 提交\u票证\u更新\u命令。关闭=关闭


    官方文档声称,如果将“commit\u ticket\u update\u commands.close=”保留为空,则Committer update将使用一些默认关键字来决定是否必须关闭票据,但这对我不起作用。唯一有效的方法是在该字段中显式设置一些关键字,例如(commit_ticket_update_commands.close=close)

    如果它不识别
    close#5
    ,Git commit消息标准通常使用命令式语气。实际上我尝试了文档中列出的大多数关键字,包括“closes”、“closed”,还尝试了“refs”、“see”等@alekwisnia:似乎post-commit钩子没有正确配置或launched@Cédric Julien:如何检查它是否启动或配置是否正常?如果您想验证您的提交后钩子是否正确启动,在它的末尾添加一行如下内容:
    date>/home/username/hook.log
    (确保列出的文件可供所有用户写入)。它应该在每次运行钩子时向指定的日志文件添加时间戳。执行测试提交并查看是否记录了新的时间戳。您可以发布当前用于提交后钩子脚本的代码吗?
    /usr/local/bin/trac admin/home/trac/project changeset添加了“$1”“$2”
    @alekwisnia-是否在存储库的
    钩子/提交后”中,还是在一个单独的脚本中,
    post-commit
    调用它?它在
    .git/hooks/post-commit
    中(所以在repo中)。我认为您的脚本根本没有运行。请参阅下面我的评论,了解一些需要检查的内容。是的,Trac需要一个运行“Trac admin Trac_ENV changeset added”的git post receive钩子,这有点傻。它可以经常检查新的提交。这里有一个想法:在带有Trac的服务器上创建一个裸克隆镜像(带有必要的post接收挂钩)。你可以通过cron作业每小时推送到镜像。这里有一个更好的方法,使用你的本地repo,当你达到某个稳定的表单时,推送到服务器(使用post-receive钩子)。是的,如果你把git-repo和Trac放在同一台服务器上,这就行了。所以我会说“不同”,而不是“更好”。)如果你的回购协议在其他地方(比如Github)托管,我的建议很有用。AdamMonsen:你是对的,事实上我自己就是这样设置的。我不认为这是解决问题的最好办法,但既然你提到过,我就把它加在我的答案上。
    */3 * * * * /hhome/username/git/syncgit.sh  >> /home/username/git/gitcron.log 2>&1