我正在使用带有 trac 的 git。推送后我想做两件事:
- 使用差异向开发团队发送电子邮件
- 如果提交消息中有一些特殊的短语(例如“see #1”),那么我希望将提交消息放在 trac 票中。
第一件事是由 git-commit-notifier 解决的。在我创建了接收后挂钩后,它可以完美运行:
#!/bin/sh /var/lib/gems/1.8/bin/git-commit-notifier /etc/git-commit-notifier.yml
我的第二个要求可以按照http://trac-hacks.org/wiki/GitPlugin#post-receivehookscripts中的描述来解决。它也可以完美地与这样的 post-receive 挂钩:
#!/bin/sh /var/trac/testgit/commit-updater
当它们分开时,这两件事都有效。但我需要将它们结合起来。所以我创建了接收后挂钩:
#!/bin/sh /var/trac/testgit/commit-updater /var/lib/gems/1.8/bin/git-commit-notifier /etc/git-commit-notifier.yml
这很有趣,但这不起作用。这些命令在单独运行时运行得很好,但只有第一个在它们被放入 post-receive 钩子时才有效。
如果我有这样的钩子:
#!/bin/sh /var/trac/testgit/commit-updater /var/lib/gems/1.8/bin/git-commit-notifier /etc/git-commit-notifier.yml
我确实收到以下错误
/var/lib/gems/1.8/gems/git-commit-notifier-0.8.0/bin/git-commit-notifier:12: nil:NilClass (NoMethodError) 的未定义方法`strip' 来自 /var/lib/gems/1.8/bin/git-commit-notifier:19:in `load' 来自 /var/lib/gems/1.8/bin/git-commit-notifier:19
但是,如果我更改这 2 个命令的顺序,我不会收到任何错误,但只有第一个命令有效。
我将不胜感激。我试图解决这个问题很长时间,但我没有任何想法。