我正在尝试创建一个cronjob,其任务是git pull每分钟执行一次,以使我的生产站点与我的主分支同步.
nobody由于权限问题,git pull需要由系统用户完成.但是,似乎该nobody帐户不允许运行命令.所以我必须以root用户身份创建任务.
我试过的crontab条目:
*/1 * * * * su -s /bin/sh nobody -c 'cd ~heilee/www && git pull -q origin master' >> ~/git.log
Run Code Online (Sandbox Code Playgroud)
它不起作用,我不知道如何调试它.
有人可以帮忙吗?
UPDATE1:git pull命令本身是正确的.我可以毫无错误地运行它.
在开始之前,我知道有很多类似的问题,但我很难找到一个简洁,安全,最好的做法,因为对它们的反馈变化如此广泛.
我想做的事情:1)在开发分支上完成我本地机器的工作.2)将更改推送到git.Git发布到webhook URL并自动让我的远程服务器在开发站点上提取更改.3)在开发站点上进行QA并确认正确后,将主分支推送到生产站点(与开发站点在同一服务器上).
我在哪里:我在本地计算机和远程服务器上安装了git.我可以将mod推送到开发分支到git.在远程服务器上,我可以提取更新,它就像一个魅力.问题是,当从本地计算机推送更改时,我无法让远程服务器自动更新.
我的问题是:1)对于远程服务器开发站点目录,我应该git init还是git init --bare?我不打算在服务器上进行更新.我希望我的开发团队在本地工作并将mod推送到服务器.我相信我需要使用git init,因为需要工作树来设置git存储库的远程别名,但我想确认一下.2)我很确定git问题的webhook帖子是由于用户权限.我怎样才能安全地绕过这个?我已经阅读了许多建议更新git hook文件的教程,但我觉得这比我需要采取的措施更加激烈.我希望能够让webhook点击一个安全拉取文件的URL而不添加大量代码(如果可能的话).
我本质上是一名Web开发人员,因此git和sysadmin任务通常是我存在的祸根.我再次知道这个问题与其他问题类似,但我还没有找到解决问题的全面,简洁,安全和最合乎逻辑的方法.我大概16个小时就已经正式点击了"没有进展的圈子".
非常感谢您的所有帮助!