2012-10-25 81 views
1

這可能是一個重複的問題,但我無法找到一個令人滿意的答案,我的問題。 情況是這樣的,我有一個網絡服務器,我可以通過SSH與它通話,它已經安裝了git。 有一個文件夾代表一個網站。以前,每個人都可以同時在服務器上工作(通過FTP)或下載一個副本到那裏機器,在那裏工作,然後FTP回它。服務器上的中央git回購,從它推拉

我現在想要的是將該文件夾設置爲git repo,這些人可以克隆到本地機器。處理它,然後將更改推回到服務器。

我該怎麼做?我試過在服務器上創建一個回購。我可以克隆這個回購,但不能向它推送任何東西。我讀過一些關於git倉庫的東西,但在我看來,這對我的問題不起作用,因爲我希望服務器上的repo是實際的網站文件夾和文件。

我真的很希望有人能幫忙,或者指點我正確的方向。

在此先感謝!

回答

0

我真的建議將git倉庫從部署目錄中分離出來。

向服務器推送存儲庫並在生產環境中部署新版本的網站必須遵循不同的工作流程。事實上,你應該推到git倉庫多次每天...

既然你已經有SSH訪問,你應該簡單地

  • 使用純倉庫,在你發現
  • 的標準方法
  • 建立基於SCP或rsync的(當然你應該犯這個腳本),一個行部署腳本,並從發展的一臺計算機執行這個腳本

編輯:

這裏有一個網站一個行deployement腳本的例子:

rsync -avz --del --stats --exclude="deploy.sh" /path/Chrall/web/* [email protected]:/var/www/canop/chrall 

而且我通常使用稍微在實際項目(REF one of my github repositories)更復雜(4條或5線和配置)腳本。

+0

我明白你的意思了。但是,我將如何做第二步? 「建立一個......」? – Crinsane

+0

我編輯了一個非常簡單的例子。在我的大部分項目中,我都有使用rsync從我的測試存儲庫(在我的開發計算機上)到生產服務器啓用部署的腳本。 –

0

簡單HOWTO準備網站的git的部署:

  • 準備文件,這不應該共享的名單 - 溫度和數據目錄 - Web服務器上,爲文件.gitignore在目錄當中應該開始分享:

    cd /var/www/mydomain.org/ 
    echo temp >> .gitignore 
    echo data >> .gitignore 
    
  • 啓動git倉庫在這個目錄下:

    git init 
    git add -A 
    git commit -m "Init" 
    
  • 允許推入這個資源庫,雖然它不是純倉庫:

    git config receive.denycurrentbranch false 
    
  • 添加掛鉤工作樹設置爲當新版本發佈最新版本 - 該腳本會推後啓動:

    echo '#!/bin/sh'  > .git/hooks/post-receive 
    echo 'git checkout -f' >> .git/hooks/post-receive 
    echo 'git reset --hard' >> .git/hooks/post-receive 
    chmod +x .git/hooks/post-receive 
    

現在應該準備服務器,現在你可以克隆庫到客戶端和正常推回。