无法在post-commit钩子中将svn update作为www-data运行

时间:2015-07-14 13:49:02

标签: svn debian sudo

我在Debian下使用svn,我通常使用某个用户提交我的网络文件,这与www-data不同。 我的提交过程没问题,但我想写一个post-commit钩子,它能够执行svn更新AS www-data到svn存储库的另一个工作副本,用于测试代码的实时更新。

我正在尝试以这种方式编写post-commit钩子:  sudo -u www-data / usr / bin / svn update

不幸的是,提交过程完成后我的工作副本没有更新。但是当我尝试在CLI中执行前一个sudo语句时,语句成功并且正确更新了工作副本。你有一些线索吗?

我已经以这样的方式配置/ etc / sudoers,无需键入用户密码来执行sudo。

2 个答案:

答案 0 :(得分:0)

  1. 空环境
  2. 中执行的Subversion中的*挂钩 没有参数的
  3. svn up使用.作为目标,我无法回忆起钩子进程的当前目录(如果存在),但我想,这不是你的LIVE-WC,所以更好的方法是/usr/bin/svn update /PATH/TO/LIVE
  4. 您可以将stdout | stderr重定向到文件中以便稍后查看一些详细信息(或者将钩子的输出编辑回SVN客户端并实时查看钩子操作 - 将1>&2添加到尾随部分命令)

答案 1 :(得分:0)

解决。

问题在于我在/ etc / sudoers中配置我的用户以访问/ usr / bin / svn作为www-data。我使用的语法完全错误。

现在我有一个名为working_copy的组,其中包含我的提交用户和www-data。在/ etc / sudoers中我有这一行:

%working_copy ALL=(www-data:working_copy) NOPASSWD: /usr/bin/svn

前提是我的提交用户可以在没有密码的情况下执行sudo。

无论如何,谢谢你@LazyBadger!