SVN post-commit hook不通过svn + ssh更新Trac票证

时间:2011-07-24 08:45:34

标签: svn trac post-commit svn-ssh

当我从运行SVN和Trac的服务器提交更改时,提交后挂钩工作正常。但是,当我从Mac远程提交时,活动会显示在Trac的时间轴中,但是故障单不会更新。

我在Netbeans 7以及命令行中尝试了这一点 - 结果相同。虽然使用了不同的密码,但我在服务器和Mac上都使用相同的用户名登录。我知道这应该不重要,因为几天前一切都运行良好,直到几天前。

我不确定我的Mac或服务器上可能有什么变化来破坏这个功能。

更多信息,已添加7/26/2011:

在我的Mac上我使用svn + ssh://,在服务器上使用file:///

我确实将Trac日志级别设置为DEBUG,但我不太确定我应该寻找什么。

我的提交后脚本如下所示。请注意,我知道post-commit本身正在运行,因为QA更新和Campfire帖子都有效。我也尝试将$ TRAC_ENV,$ REPOS和$ REV输出到文件中,并且所有变量都设置正确。

#!/bin/sh

# POST-COMMIT HOOK
#
# The post-commit hook is invoked after a commit.  Subversion runs
# this hook by invoking a program (script, executable, binary, etc.)
# named 'post-commit' (for which this file is a template) with the 
# following ordered arguments:
#
<<<more comments, yada, yada>>>
#
# Here is an example hook script, for a Unix /bin/sh interpreter.
# For more examples and pre-written hooks, see those in
# the Subversion repository at
# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and
# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/


REPOS="$1"
REV="$2"
TRAC_ENV=/usr/share/trac/projects/main

#commit-email.pl "$REPOS" "$REV" commit-watchers@example.org
#log-commit.py --repository "$REPOS" --revision "$REV"

# update the qa working copy
/usr/bin/ruby /usr/local/svn-repo/hooks/scripts/svn-dev-wc-update.rb $REPOS $REV

# send a message to Trac concerning this commit
/usr/bin/trac-admin $TRAC_ENV changeset added $REPOS $REV

# send a message to Campfire's Engineering room
/usr/bin/ruby /usr/local/svn-repo/hooks/scripts/campfire-announce.rb $REPOS $REV 

2 个答案:

答案 0 :(得分:0)

您可以发布提交后挂钩脚本的内容吗?

从服务器提交时,如何访问存储库?您是使用存储库的file://语法,还是使用远程提交时使用的相同svn+ssh:// URL?如果您尝试这两种访问方法,您会得到相同的结果吗?

此外,尝试将Trac的日志记录选项调到最大值,并查看日志文件中是否有任何有用的内容。

答案 1 :(得分:0)

老问题,但我遇到了同样的问题,很快就解决了。我只收到一条错误消息:

Warning: post-commit hook failed (exit code 2) with output:
Error: Command not found

未找到的命令不是tracadmin可执行文件。当我通过https进行提交时,这不会发生。但有什么区别?区别在于https commit会将钩子称为用户'www-data',而svn + ssh commit将使用实际用户的帐户。

我通过创建一个名为svnwrite的组来解决这个问题,将自己添加到它并将组写权限添加到我的trac项目目录。