2013-03-15 100 views
3

我正在開發一個網站,並使用我自己的筆記本電腦作爲開發服務器,同時將我的在線服務器用作生產服務器。我使用git來管理我的項目。如何使用自託管的git服務器作爲生產服務器?

我以前用過heroku,我覺得只用git push heroku master發佈我的網站真的很酷,所以我打算建立一個我自己。

所以,這是我所做的,我已經在我的生產服務器上設置了git(用gitosis來管理訪問),在我的git倉庫中,我用git remote add [email protected]:myrepo.git爲git倉庫添加了遠程倉庫。

問題是如何獲取生產服務器上的代碼?生產服務器用作git服務器,所以我只能得到.git文件夾而不是真正的代碼。我想到了一個絕招,那就是使用git clone --local myrepo.git myrepo克隆生產服務器上的數據,並在鉤/ myrepo.git的文件夾,我編輯的post-receive文件如下:

#!/bin/sh 
touch /tmp/do-we-got-here 
cd /path/to/clone/myrepo 
/usr/bin/git pull 

我使用後git push production master,do-we-got-here文件被創建,所以我可以告訴後接收掛鉤工作,但git pull部分不起作用,當我到達myrepo文件夾,並使用git pull,它仍然從myrepo.git拉。

所以我想知道如何處理這個?我知道這是可能的,因爲像heroku託管網站正在工作!但問題是如何?

+0

你有什麼錯誤嗎? – 2013-03-15 14:42:36

+0

爲什麼不在生產服務器中擁有整個存儲庫(包含文件)?在分佈式版本控制系統中沒有Repo-Server概念 – iberbeu 2013-03-15 14:46:29

+0

@roko,nope,我不知道如何登錄鉤子。 – 2013-03-15 14:46:49

回答

4

我有一個類似的問題,這是對我的幫助。

#!/bin/sh 
touch /tmp/do-we-got-here 
cd /path/to/clone/myrepo 
unset GIT_DIR 
git pull 

運行git hook時,設置了GIT_DIR。這意味着您的pull將不會與您更改到的目錄中的第二個存儲庫一起運行。

+1

It工作!非常感謝你! – 2013-03-15 14:57:15