无法 运行 svn 更新为 post-commit 挂钩中的 www-data

Cannot run svn update as www-data in post-commit hook

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

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

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

我已将 /etc/sudoers 配置为无需输入用户密码即可执行 sudo。

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

已解决。

问题出在我在 /etc/sudoers 中配置我的用户以访问 /usr/bin/svn 作为 www 数据的方式。我使用的语法完全错误。

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

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

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

无论如何感谢@LazyBadger!