2012-11-11 177 views
1

我一直在尋找適合我們的工作流程,但仍無法找到完整的工作流程。希望你能幫助我們,一個由兩個開發人員組成的簡單團隊!Git工作流程和部署,同步

據我所知,最好的工作流是使用git將所有更改推送到通用開發服務器,然後將這些更改上傳到部署服務器。

有很多這方面的指南,如果所有的改變都是由我們的開發人員完成的,很容易解決。我認爲常見的問題是,部署服務器上也發生了很多變化。常見的一種情況是最終用戶在CMS中上傳新圖像。一些最終用戶甚至通過CMS界面編輯CSS文件。我們如何讓開發服務器和部署服務器同步? Git的? rsync的?組合?

/馬丁

回答

1

這是一個普遍的做法,所以你永遠需要更新從生產服務器端存儲庫不被跟蹤的Git用戶相關的變化。

用戶圖像應放置在單獨的目錄,中央資產服務器或Amazon S3上。將CMS相關的更改存儲在數據庫中也是一個好主意。

1

您必須從概念上將代碼更改與內容更改(特別是用戶生成的內容)分開。 Git不適合做整個站點的備份,所以索引快速變化的用戶內容只會造成一個過大的存儲庫,效率低下,最重要的是不可移植。

使用Git來跟蹤允許用戶編輯/貢獻/維護其內容的文件更改。使用中央服務器(我們使用gitolite)作爲您的工作流程。正如@iltempo提到的那樣,將用戶生成的內容分開,並使用.gitignore將其保存在存儲庫中。

隨着Git倉庫,你可以使用git掛鉤執行腳本 - 很多人使用這些自動部署,但你可以很容易地使用rsync有備份和自動同步您的服務器。 rsync非常適合您,因爲您可以選擇僅添加新內容,從而降低交易時間。因此,從概念上講,git負責代碼,rsync負責處理所有其他事情,而git鉤子則可以實現這一點。

我們將此與我們的CMS一起使用,它是一種救生員。

+0

好的,這聽起來很有趣,我理解你的想法! 現在它只是打我;如果開發人員通過開發人員計算機上的CMS上傳圖片,該怎麼辦?根據我的理解,我們只是從生產服務器同步DOWN文件,現在我需要同步UP。也許最好是像Unison那樣使用或多或少克隆目錄? –

+0

什麼是最好的與鉤子,當前簽出的分支或總是主分支同步? –

+0

你的CMS圖片問題更多的是一個rsync問題比git - 你可以設置(但是你希望)一個自動化的腳本,在向上的方向同步你的服務器,或者在這種特殊情況下使用FTP來移動這些文件並使它們成爲通過rsync同步備份到其他人。完全取決於你,你有很大的靈活性。就鉤子同步而言,生產服務器最好是在檢查穩定的分支時處理;但這絕對是一個指導方針,取決於您的工作流程以及您發佈更改的頻率。 – Nic

0

粗略地說,您需要排除源樹和/或部署過程中的某些文件夾/文件。 Rsync可以。

您要做continuous integration?我想建議您使用Jenkins

使用Jenkins,您可以自動化構建,儘可能自動執行測試,甚至可以在將提交推送到Git存儲庫,登臺服務器或生產時部署應用程序。

Jenkins不僅限於Java項目,您可以使用它構建任何項目。