2012-09-02 62 views
3

我一直在編碼Magento使用cron作業來處理備份的網站,但在嘗試恢復到以前版本的網站時會變得有點笨拙。我基本上必須挖掘備份並手動恢復。我讀過git,我喜歡能夠通過開發週期記錄我的更改,並通過一些命令恢復到我更改的具體內容的想法。Magento使用git的工作流程

目前我在本地回購(master,develop)中有兩個分支。我基本上在開發分支中完成所有的開發工作,並在完成一系列特定任務時將所有內容合併到主分支中,並將其推送到我的gitbucket回購庫中以備用,並且只是爲了進入使用遠程回購。

我是git的新手,所以這個聲音對於我的場景來說足夠了嗎?或者任何人都可以推薦一個使用git和Magento的單人店的良好工作流程?謝謝。

回答

11

我們使用GitFlow模型來開發我們的Magento。它與你的相似,但是有一個分支站點的額外分支。更大的開發任務/修復也在單獨的分支中完成,以確保開發總是相當穩定。我們的臨時站點是一個git倉庫,登臺分支簽出並且生產站點將主分支簽出。當我們準備將更改部署到分段時,我們將它們合併到本地機器上,然後推送到一箇中央git倉庫,然後拉動服務器。運行良好,但您需要小心app/etc/local.xml,因爲在每個環境中這應該是不同的。您還需要確保媒體和var文件夾等內容不會以git repo的形式出現。

Github publishes a .gitignore對於Magento,但我與它的問題是,它排除所有的Magento核心文件。你最終得到一個很好的乾淨的存儲庫,只包含你的更改,但不包含可部署的東西。我們使用一個簡單得多的.gitignore,它基本上不包括media var和app/etc/local.xml。我們通常使用單個遠程(例如Github)並從那裏部署。

在我們部署到服務器上,我們一般有shell訪問和git安裝,以便部署ssh'ing在運行一個git拉的事(或取&合併),從正常的遙控器。

我們將分段站點作爲git中的獨立分支進行維護,並以相同的方式部署它們。所以我們的過程看起來像在功能分支中開發並在完成時合併到「開發」中。集成測試完成後,將「開發」(或選擇性更改)合併到「分段」並部署。準備生產時,將「分段」(或選擇個別更改)合併到「主」分支。這基本上是GitFlow,但是「準備發佈」分支是長期存在的。

由於註釋中鏈接的Sonassi tutorial指出,符號鏈接媒體的問題在於,如果從生產中刪除媒體文件,則會在分段中得到損壞的鏈接,反之亦然。我們不是將這兩者鏈接起來,而是更新來自git的暫存代碼,但另外運行分段和生產站點。如果我們需要在分期中使用新數據,出於任何原因,我們將生產媒體和數據庫的副本並將其恢復到分期網站。

Gitflow模型使用發佈標籤的版本號,如果您擁有團隊同意發佈的版本號,請使用它們。否則,如果你有某種里程碑計劃,或者你正在努力的sprint系統,並且可以通過這種方式來識別發佈,那也是可行的。如果一切都失敗,我們使用部署發生的日期/時間。例如

git tag -a deployed-`date +%Y%m%d-%H%M` -m "Code release at `date`" 
+0

感謝您的反饋。我一直在使用這個.gitignore文件https:// github。com/github/gitignore/blob/master/Magento.gitignore 也許我也會實現一個臨時分支。當你準備好在該分支上測試時,你是否將遠程服務器設置爲遠程服務器?另外,如何將文件複製到製作中?我沒有在生產機器上安裝git,所以我不能將它設置爲遠程。我知道你可以做一個git鉤子,但我沒有太多的瞭解。 – ringerce

+0

這裏有一些嚮導,向你展示如何通過git鉤子設置FTP部署,但是我還沒有使用過像這樣的設置。 –

+0

謝謝吉姆。你一直在幫助很大。我在生產服務器上安裝了git。所以現在我需要ssh進入生產服務器,並將最新的穩定中繼(主分支)拖到生產服務器上,並重復以後的發佈過程? – ringerce