【问题标题】:Subversion post-commit hook will not run on commit, script works because I can run it on the command lineSubversion post-commit 钩子不会在提交时运行,脚本有效,因为我可以在命令行上运行它
【发布时间】:2013-12-01 03:45:20
【问题描述】:

我刚刚创建了一个新的存储库。我的服务器是 Ubuntu 12.04 32 位。 我希望我的承诺在我提交后立即生效。这是通过在我的公共 html 目录中制作工作副本并让 post-commit 挂钩更新该工作副本来实现的。我已经使用此处的说明进行了设置:

http://www.frenssen.be/content/using-subversion-automatically-update-live-website

问题是当我的项目提交时我的 post-commit 不会运行。 我的项目提交得很好。我知道该脚本也是有效的脚本,因为我可以使用

运行它
env ./post-commit

hooks 目录中,它会正确更新。

我认为这可能是权限问题,因此我广泛使用 chown 来确保 www-data 是以下内容的所有者:

the repo /home/svn/repo2
the working copy /var/www/html
the hook /home/svn/repo2/hooks/post-commit
the update binary /home/svn/autoupdate/autoupdate

但还是一无所获。我的提交是成功的,但钩子永远不会运行。我的钩子脚本如下所示:

#!/bin/sh
/home/svn/autoupdate/autoupdate

所有的谷歌搜索似乎都指向权限问题,但我无法弄清楚这一点。

【问题讨论】:

  • 不,抱歉,我没有在问题中很好地阐明这一点。项目提交就好了,我可以提交它,然后在控制台中手动运行我的 post-commit 并按预期工作
  • 如果你向钩子添加另一行代码(在自动更新之前).. 会执行吗? (尝试写入 /tmp 或其他东西)
  • 我插入了mkdir /tmp/hello,但什么也没发生
  • 你已经列出了你的 chowns,但是你的模式呢? (特别是,后提交是否设置了适当的执行模式?)
  • 我试过744和755和777,结果都一样

标签: bash svn hook post-commit-hook


【解决方案1】:

你能重复这个人的例子,看看它是否有效吗?
mikewest.org/2006/06/subversion-post-commit-hooks-101

你提交的时候有没有报错?

如果您的提交后挂钩实际上失败了,我认为您会在用于执行签入的任何客户端中看到这一点的证据。我几乎怀疑 post-commit 根本没有触发。仔细检查一下,该文件实际上需要被称为 post-commit,全部小写,而不是 post-commit.tmpl。

【讨论】:

  • 知道错误的脚本会破坏提交使我能够跟踪脚本正在运行的事实,只是没有按照我的预期进行。看到当我手动运行脚本时,它要求我提供 repo 的凭据,我可以拼凑出 post-commit 正在运行,但只是没有提供正确的凭据。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-03
  • 2013-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
相关资源
最近更新 更多