2011-12-06 176 views
0

我试图做一个后提交更新我的网站在每次提交。在/挂钩/后提交颠覆后提交不叫

我一样遵循

/svnUupdat/cProgrammeThatUpdate >> /log/test.log 

现在好了,如果我尝试

env - ./post-commit 

它的工作原理,该网站获得更新到最新修订(有是在日志中的东西)

但是,如果我承诺后提交不被称为?? (没有在日志和网站未更新)

需要注意的是,如果我只放在后提交

/bin/echo "post-commit run" >> /log/test.log 

如果犯了某些事情...工程..有什么东西在日志..为什么不叫我的C程序呢?

编辑 我尝试别的东西,那不是调用C PROGRAMM

/usr/bin/svn update /var/www/vhost/xx.com/site1/ >> /var/log/svn/example.log 
日志我跳过在/ var/WWW在

...

为什么跳过?如果我在终端推出了svn更新它的工作原理,工作目录中获取最后一次修订

感谢

回答

1

的“跳过”消息指出,因为它不是一个工作拷贝,Subversion不能更新目录。但是,这与您的声明有冲突,您可以手动更新目录。也许你的道路上有错别字?

您还应该意识到,提交后脚本是以提交的用户身份执行的。这可能是也可能不是你使用终端的用户。您应该检查提交用户是否具有适当的权限来执行提交后脚本,以及该用户是否有权执行脚本的任何操作。

+0

你好,的确,我在我的路径中有一个错字(在提交后)。现在A提交后路径是正确的,日志中没有任何东西......所以这可能是一个特权问题。正在提交的进程是httpd,并且它的所有者是apache我已经做了chown apache.apache post-commit我是否必须执行与我的工作目录相同的操作? – Johny19

+0

由于您计划更新工作目录,因此您肯定需要写入权限。尝试'su - apache'(或任何你的httpd用户)并执行你的post-commit脚本。但是,当您更改http守护程序的权限时,您应该知道您正在执行的操作,因为这可能会影响安全性。你有没有考虑过使用'svn + ssh'来访问你的repo呢? –

2

请注意,当SVN调用挂钩文件时,就像没有设置环境变量一样。因此您必须在钩子文件的开头手动设置PATH变量。