如何使用crontab使用svn更新代码?

I am using following steps to update code on server after login to server:

sudo -s
<wrote password here>
cd /var/www/staging
rm -r app.old
mv app app.old
svn checkout https://example.com/projectname/trunk/app app

Now I created update.sh file in /var/www/ with following content

cd /var/www/staging
rm -r app.old
mv app app.old
svn checkout https://example.com/projectname/trunk/app app

And I have following crontab entry to run after every 5 minutes:

*/5 * * * * /var/www/update.sh

Problem: So cron job is working but it is only deleting the app folder and not checking out it from svn repository. But when I run bash /var/www/update.sh manually it works fine after sudo -s.

How to fix this for cron job as well. Is it related to sudo -s or something else?

Thanks

I suspect the problem is that the job is running from cron as root and root user doesn't have permissions to checkout.

First, I suggest that you include details of the username/password to use with SVN - inside your script:

svn checkout --username USER --password PASS ttps://example.com/projectname/trunk/app app

Next, change the line in your crontab to this:

*/5 * * * * /var/www/update.sh 2>&1| mail -s "Cron job execution" youremail@wherever.com

Then, when the job executes, any errors would be sent to you via email. At least you'll see what is going wrong.

If you need to run it as a different user, then install it on that users crontab. Rather than trying to sudo over in the script.