2012-11-28 192 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