2012-11-28 159 views
3

我想将我的服务器上的git存储库同步到本地网络服务器。我读过的所有指南导致了不同的错误,现在我真的很绝望。我很抱歉,如果您已经阅读这个问题上百倍,但我还是不明白这一点-.-git pull通过crontab自动执行

  • 与SUSE Linux的工作,并通过SSH用腻子conneting它
  • 的webprojekt哪里需要同步的文件夹上:/ SRV /网络/ htdocs中/ MY_PROJECT
  • Git仓库,在这里:/ SRV /混帐/库/ MY_PROJECT
  • 我有用户: “根” 和 “cron的”

cron应该每分钟或更少的时间做这个命令h用户“cron”:

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

当我手动输入这些命令时,这些命令正常工作。 (除了每次都必须输入用户密码外)

In this question I got some informations, but I always get an error when I try them myself

我的cron应该是这样的,那么:

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

我执行该对我的腻子,其回答我:-bash:斌:找不到命令

我的下一个尝试是:

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

错误:crontab中:无效选项 - 'S'

错误:crontab中:用法错误:无法识别的选项

我尝试了很多更多的组合(除苏-s或删除-c等),但它从来没有工作,因为我想-.-不该” t我在PuTTY上执行此命令?

相关知识:我是一名Linux和GIT初学者,昨天开始使用它,实际上设法做到现在。 (^。^)所以我会很高兴有一个可以理解的解释,我做错了什么,我必须做什么。这很混乱。

+0

cronjob不是执行此操作的最佳方法。您的git存储库在哪里托管? – Chronial

+0

存储库不在某处。在服务器上,我有apache,gitolite和git存储库。如果这是你的想法,我们不使用github.com。在我们将项目上传到活动服务器之前,我想使用thiy系统进行内部测试。 – lastria

回答

2

最简单的方法来实现你想要的(将git仓库自动部署在你的服务器上)是把git仓库放到你的web服务器中,并使用钩子来检查推送。如何在此答案中描述:Deploy a project using Git push