【问题标题】:Subversion post-commit hook to update 'staging' version not working用于更新“暂存”版本的 Subversion 提交后挂钩不起作用
【发布时间】:2009-09-11 08:52:18
【问题描述】:

我们的 Web 应用程序有一个暂存版本(它基本上是一个没有人工作的颠覆工作副本),它位于“/apps/software”中。每个开发人员在“~/apps/software”中都有自己的工作副本。每当开发人员提交对存储库的更改时,我想使用一个简单的提交后挂钩脚本来更新暂存副本。

听起来很简单吧?好吧,我用头撞砖墙的时间比我应该的要长。钩子脚本(称为'post-commit',位于/svn/software/hooks,permissions=777,user:group=apache:dev)如下(暂时忽略注释掉的位):

#!/bin/sh

/usr/bin/svn update /apps/software >> /var/log/svn/software.log

# REPOS="$1"
# REV="$2"
# AUTHOR=`/usr/bin/svnlook author -r "$REV" "$REPOS"`
# LOG=`/usr/bin/svnlook log -r "$REV" "$REPOS"`
# EMAIL="test@example.com"

# echo "Commit log message as follows:-
#
# \"${LOG}\"
#
# The staging version has automatically been updated.
#
# See http://trac/projects/software/changeset/${REV} for more details." | /bin/mail -s "SVN : software : revision ${REV} committed by ${AUTHOR}" ${EMAIL}

就是这样。日志文件具有与提交后脚本相同的权限和用户:组,我什至为暂存副本提供了相同的用户:组和权限。 Apache 本身(我们使用的是 apache subversion 扩展)也在 apache:dev 下运行。我知道钩子正在执行,因为上面注释掉的发送电子邮件的东西工作正常 - 只是更新命令不是。

我也可以在没有环境变量的情况下执行提交后挂钩脚本:

$ env - /svn/software/hooks/post-commit /svn/software <changeset>

它运行良好,执行 'svn update' 没问题。我什至尝试将“>>”删除到日志文件,但没有任何区别。

对此的任何帮助将不胜感激......

【问题讨论】:

  • 并不是说它与您的问题有任何关系,而是您的 shebang 说“sh”并且您问题上的标签说“bash”。
  • 好的,我已经选择了更广泛的“shell”标签。

标签: linux svn shell hook post-commit


【解决方案1】:

您这里只发送标准输出到日志,而不是错误输出:

/usr/bin/svn update /apps/software >> /var/log/svn/software.log

这样做是为了看看出了什么问题:

/usr/bin/svn update /apps/software >> /var/log/svn/software.log 2>&1

【讨论】:

  • 这帮助很大——一千谢谢!日志文件详细说明了我遇到的问题:验证 的服务器证书时出错:-证书不是由受信任的机构颁发的。使用指纹手动验证证书! (R) 暂时拒绝、接受 (t) 还是永久接受 (p)? svn: PROPFIND 请求在 '/live' 上失败 svn: PROPFIND of '/live': 服务器证书验证失败:发行者不受信任 () 所以基本上,我们使用的是自证书 SSL,我需要一些方法永久接受它。有什么想法吗?
  • 啊,这里的 SVN 书中有介绍:svnbook.red-bean.com/en/1.5/…
  • 那里提到的servers 文件可以在~/.subversion/ 中找到,并在此处描述:svnbook.red-bean.com/en/1.5/…
猜你喜欢
  • 1970-01-01
  • 2019-10-02
  • 1970-01-01
  • 1970-01-01
  • 2020-04-23
  • 2012-10-18
  • 2015-07-08
  • 2013-10-29
  • 1970-01-01
相关资源
最近更新 更多