post-commit 挂钩在 svn commit 上产生错误,但在命令行上手动运行时有效

2024-02-08

我目前正在尝试为我的颠覆存储库设置提交后挂钩以发送电子邮件通知。 我正在使用颠覆1.7.8。我的提交后挂钩脚本如下:

#!/bin/sh

REPOS="$1"
REV="$2"

"$REPOS"/hooks/mailer.py commit $REPOS $REV "$REPOS"/mailer.conf

当我提交时,会产生以下错误消息:

Traceback (most recent call last):
  File "/lib/python2.7/site.py", line 563, in <module>
    main()
  File "/lib/python2.7/site.py", line 545, in main
   known_paths = addusersitepackages(known_paths)
  File "/lib/python2.7/site.py", line 278, in addusersitepackages
   user_site = getusersitepackages()
  File "/lib/python2.7/site.py", line 253, in getusersitepackages
   user_base = getuserbase() # this will also set USER_BASE
  File "/lib/python2.7/site.py", line 243, in getuserbase
   USER_BASE = get_config_var('userbase')
  File "/lib/python2.7/sysconfig.py", line 521, in get_config_var
   return get_config_vars().get(name)
  File "/lib/python2.7/sysconfig.py", line 420, in get_config_vars
   _init_posix(_CONFIG_VARS)
  File "/lib/python2.7/sysconfig.py", line 299, in _init_posix
raise IOError(msg)
IOError: invalid Python installation: unable to open //include/python2.7/pyconfig-32.h (No such file or directory)

这个错误的奇特之处在于,当我在命令行上运行提交后(使用适当的参数)时,不会产生错误,并且我收到了所需的电子邮件通知。这让我认为该错误与我的 mailer.conf 文件无关。

有谁知道可能导致此错误的原因是什么?

谢谢, 杰米。

更正:

我认为在 root 下运行 svnserve 可以在本地解决问题,但经过进一步的实验,我意识到这是错误的。如果使用 file:// 语法签出项目,则 post-commit 在本地计算机上工作,但如果使用 svn:// 语法签出,则失败。

因此,只有当 svnserve 尝试运行 post-commit 时才会出现问题,无论它是否在 root 下运行,或者客户端位于相同或不同的计算机上。


您的钩子未触发的可能原因有很多:

  • 出于安全原因,Subversion 挂钩脚本在不设置任何环境变量的情况下运行。因此,在钩子中设置环境变量,并使用绝对路径来运行应用程序
  • 网络驱动器映射是用户特定的。确保运行 SVN 服务器的用户帐户存在驱动器
  • 钩子不会从hooks/文件夹,它们从根服务器的文件夹执行

更多信息:

  • Subversion 书籍:实施存储库挂钩 http://svnbook.red-bean.com/en/1.7/svn.reposadmin.create.html#svn.reposadmin.create.hooks
  • 调试 Subversion 存储库挂钩 http://blog.pengoworks.com/index.cfm/2008/2/5/Debugging-Subversion-Repository-Hooks-in-Windows

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

post-commit 挂钩在 svn commit 上产生错误,但在命令行上手动运行时有效 的相关文章