我令与核心预算资源调拨目标(trac).后推我要两件事要做:

  1. 发送电子邮件向发展的团队差异
  2. 如果有一些特别的短语,在提交消息(如"看见#1"),然后我希望提交信息应放在核心预算资源调拨目标(trac)的票。

第一件事就是解决的混帐提交通知。它完美的作品之后我已经创建了后收到钩:

#!/bin/sh

/var/lib/gems/1.8/bin/git-commit-notifier /etc/git-commit-notifier.yml

我的第二个要求可以作为解决所描述的在 http://trac-hacks.org/wiki/GitPlugin#post-receivehookscripts.它还完美的作品这样的后收到钩:

#!/bin/sh

/var/trac/testgit/commit-updater

2事工作时,他们是分开的。但是我需要把它们结合起来。所以我创造了后收到钩:

#!/bin/sh

/var/trac/testgit/commit-updater
/var/lib/gems/1.8/bin/git-commit-notifier /etc/git-commit-notifier.yml

这是非常有趣,但是这不是工作。命令完美地运行,以及当的单独运行,但是只有第一个作品的时候,他们被放到后收到钩。

如果我有这样的钩:

#!/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: undefined method `strip' for nil:NilClass (NoMethodError)
        from /var/lib/gems/1.8/bin/git-commit-notifier:19:in `load'
        from /var/lib/gems/1.8/bin/git-commit-notifier:19

但是,如果我改变了这2命令我没有收到任何错误,但只是第一命令的工作。

我将感谢任何的帮助。我在试图解决这个问题很长一段时间我没有任何想法。

有帮助吗?

解决方案

假设我的评论是正确的, commit-updater 是吃的 stdin, 这应该做的把戏:

#!/bin/sh

FILE=`mktemp`
cat - > $FILE
cat $FILE | /var/trac/testgit/commit-updater
cat $FILE | /var/lib/gems/1.8/bin/git-commit-notifier /etc/git-commit-notifier.yml
rm $FILE

其他提示

我发现ngoozeff的解决方案是有用的,但我不得不做一些补充。首先,脚本应该失败,如果一个钩的失败。在第二,一些钩子可以期望的论点。在我的情况的gitzilla钩是这样。

对于我的以下工作结合gitzilla和gitolite钩:

#!/bin/sh

FILE=`mktemp`
cat - > $FILE
cat $FILE | $GIT_DIR/hooks/update.gitzilla $* || exit 1 
cat $FILE | $GIT_DIR/hooks/update.gitolite $* || exit 1
rm $FILE

注意元*和出口发言。你也可以使用美元GIT_DIR变量。更新。gitzilla和更新。gitolite文件是象征性的联系。

一个替代使用一个文件将是:

#!/bin/sh

while read oldrev newrev refname
do
   echo $oldrev $newrev $refname | /var/trac/testgit/commit-updater
   echo $oldrev $newrev $refname | /var/lib/gems/1.8/bin/git-commit-notifier /etc/git-commit-notifier.yml
done

资料来源: http://mmm.beachtemple.com/blog/2009/04/06/git-post-receive-hook/

因为输入的数据不是所有的巨大的,你可以去没有临时文件和保持数据,在壳体:

#!/bin/sh

refs=$(cat)
/var/trac/testgit/commit-updater <<END
$refs
END
/var/lib/gems/1.8/bin/git-commit-notifier /etc/git-commit-notifier.yml <<END
$refs
END
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top