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
这是我一直在使用和工作