使用crontab自动执行git pull

3
我想将我服务器上的git代码库与本地web服务器同步。我读过的所有指南都引起了不同的错误,现在我真的很绝望。如果你已经看过这个问题一百次,我很抱歉,但我仍然不明白 -.-。
  • 在Linux SuSE上工作,并通过SSH使用PuTTY连接
  • 需要进行同步的web项目位于文件夹:/srv/www/htdocs/my_project
  • git代码库在此处:/srv/git/repository/my_project
  • 我有“root”和“cron”两个用户

应该由用户“cron”每分钟或更短时间执行以下命令:

cd /srv/www/htdocs/my_project
git pull origin
(git fetch) <-- not mandatory

这些命令在手动输入时可以正常工作。(除了每次都需要输入用户密码)

在这个问题中,我得到了一些信息,但是当我尝试使用它们时,我总是会遇到错误

我的cron应该长这样:

* * * * * su -s /bin/sh cron -c 'cd /srv/www/htdocs/my_project && /usr/local/bin/git pull origin master' 

我在PuTTY上执行了这个命令,然而系统返回如下错误信息:-bash: bin: command not found

接下来,我尝试了:

crontab * * * * * su -s /bin/sh cron -c 'cd /srv/www/htdocs/my_project && /usr/local/bin/git pull origin master'
错误:crontab:无效选项--'s' 错误:crontab:使用错误:无法识别的选项

我尝试了很多组合(删除su -s或删除-c等),但它从未按我想要的方式工作。这个命令不应该在PuTTY上执行吗?

值得注意的是:我是一个Linux和GIT初学者,昨天开始使用它,并且实际上已经成功做了很多事情。 (^.^) 所以我希望能够得到一个易于理解的解释,告诉我我做错了什么以及我应该做什么。 这太令人困惑了。


一个cronjob并不是最好的方法来完成这个任务。你的git仓库托管在哪里? - Chronial
仓库并非托管在某个地方。服务器上安装有apache、gitolite和git版本库。我们不使用github.com,如果这是您的想法的话。我想在上传项目到正式服务器之前,在内部测试中使用这个系统。 - lastria
1个回答

2

实现您想要的方式(自动部署git存储库到服务器)最简单的方法是将git存储库放在Web服务器中,并使用钩子在推送时进行检出。如何做到这一点在此答案中描述:使用Git push部署项目


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接