Git使用cronjob自动拉

我试图创build一个任务的cronjob每分钟做一个git pull让我的生产站点与我的主分支同步。

由于权限问题,git pull需要由系统用户nobody完成。 不过似乎这个nobody账号是不允许运行的命令。 所以我必须以root用户身份创build任务。

我尝试的crontab项:

 */1 * * * * su -s /bin/sh nobody -c 'cd ~heilee/www && git pull -q origin master' >> ~/git.log 

它不工作,我不知道如何debugging它。

谁能帮忙?

UPDATE1: git pull命令本身是正确的。 我可以运行它没有错误。

解:

 */1 * * * * su -s /bin/sh nobody -c 'cd ~dstrt/www && /usr/local/bin/git -q pull origin master' 

当你需要弄清楚如何让更新工作的时候,你最好使用上游的钩子去实现它。 你可以简单地使用post-commit钩子的curl来实现这个function,或者如果你使用的是github,那么就使用一个post-receive钩子。

 */1 * * * * su -s /bin/sh nobody -c 'cd /home/heilee/src/project && /usr/bin/git pull origin master' 

这纠正了一些错误,使得我的系统无法正常工作(Ubuntu> 10.04服务器)。 关键的变化似乎是在pull之后,而不是之前。 您将不会注意到,在您拖曳/var/log/syslog文件或尝试运行未更新的生产代码之前,您的拉不能工作。

 #!/bin/bash cd /home/your_folder/your_folder && /usr/bin/git pull git@bitbucket.org:your_user/your_file.git 

这是我一直在使用和工作