无法将svn更新作为提交后挂钩中的www数据运行

无法将svn更新作为提交后挂钩中的www数据运行,svn,debian,sudo,Svn,Debian,Sudo,我在Debian下使用svn,我通常使用某个用户提交我的web文件,这与www数据不同。 我的提交过程还可以,但我想编写一个提交后钩子,它能够将svn更新作为www数据执行到svn存储库的另一个工作副本,以测试代码的实时更新 我试图以这种方式编写post-commit钩子: sudo-u www-data/usr/bin/svn-update 不幸的是,提交过程完成后,我的工作副本没有更新。但是,当我尝试在CLI中执行前一个sudo语句时,该语句成功,工作副本正确更新。你对此有什么线索吗 我配置

我在Debian下使用svn,我通常使用某个用户提交我的web文件,这与www数据不同。 我的提交过程还可以,但我想编写一个提交后钩子,它能够将svn更新作为www数据执行到svn存储库的另一个工作副本,以测试代码的实时更新

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

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

我配置/etc/sudoers的方式不需要键入用户密码来执行sudo

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

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

    现在我有一个名为working_copy的组,它由我的提交用户和www数据组成。在/etc/sudoers中,我有这样一行:

    %working_copy ALL=(www-data:working_copy) NOPASSWD: /usr/bin/svn
    前提是我的提交用户可以在没有密码的情况下执行sudo


    不管怎样,还是要感谢@lazybacker

    谢谢你的回复,我会尝试更新钩子。我把我的钩子放进去了:/usr/bin/sudo-g www-data-u www-data/usr/bin/svn-update-FULL/PATH/to/LIVE/WC>/tmp/svn_-log.txt。不幸的是,这仍然不起作用,日志文件也没有写入。执行提交的用户可以不使用密码执行sudo。如果我从Debian shell中键入“commit user”,前一条语句将成功。