2015-06-22 108 views
0

我在symfony 2網站上工作,它是我們公司銷售的產品(每個客戶都有自己的安裝)。如何維護symfony網站的不同版本

我們的每個客戶端都得到一個略有不同的版本:有時候差異很小(不同的字符串,稍微不同的模板),有時它們更大(不同的數據庫激活,不同的數據庫模式,不同的security.yml文件等等)

當前每個版本都在它自己的git分支上。由於我們現在只開始銷售,並且沒有很多客戶(=分支機構),所以這種方法現在可行。

但我想轉移到更好的解決方案。 任何想法?

感謝, 一個

回答

1

我不同意。如果是單個應用程序,那麼每個客戶端或發佈版本的分支,即需要單獨歷史記錄(更改跟蹤)的配置,恰恰是正確的做法。客戶端使用/共享相同的應用程序,「核心」,無論如何,但可能要控制何時在一個客戶端的功能/錯誤更改合併到其他配置,即分支機構。每個客戶都必須通過從開發分支到客戶分支的手動分開進行「升級」。你想支付這個開銷來獲得穩定和隔離。

至於你提到的具體區別:

  • 不同的字符串:客戶的具體CONFIGS,常量,部署的東西,也許應該是在每個客戶端/部署的模塊(包括文件,等等),你可以在合併時簡單地忽略,這樣核心應用程序代碼就永遠不會有客戶端/部署特定的差異。
  • 略有不同的模板:嗯,這味道不好;如果您可以使用符號常量或部分或其他,並將差異移至config.php,請參閱上述解決方案。否則,不要模板差異表明它不是同一個應用了嗎?
  • 激活了不同的包:如果你可以把include語句放在config.php中,沒問題。
  • 不同的數據庫模式:令人討厭的業務。這個應用程序可以與架構無關嗎?你能以某種方式做多態嗎? Nu,我不知道,二十年來沒有碰過PHP,現在我只做CoffeeScript和NoSQL。 ; o)
  • 不同的security.yml:與config.php相同,沒有問題,只是不合並該文件,甚至完全停止跟蹤它(從回購中刪除)。

HTH。 ; o)

1

我不認爲一個分支是一個很好的解決方案,它不適合這種使用情況。正如我所看到的,分支機構應該用於分期或功能/修復。

我看到它,你有幾個選項(如果你不熟悉這些選項,你應該在我附鏈接瞭解更多關於他們):

  • Git的子模塊。 「一個子模塊允許你將另一個Git倉庫保存在倉庫的一個子目錄中,另一個倉庫有它自己的歷史記錄,它不會干擾當前倉庫的歷史記錄,這可以用於具有外部依賴項,如第三方庫例如。」 http://git-scm.com/docs/git-submodule
  • 作曲家。這是我認爲最適合你的東西。使用常規的依賴關係管理器(php的作曲家,nodejs的npm等)。我會給你完全控制版本被使用+易於部署的選項。 https://getcomposer.org/

另一種辦法是做「老派」。在情況下,他們都在同一個服務器,只保留「核心」的東西,在根文件夾,並將其包括爲每個項目。這不是一個推薦的方式去,但它可能是足夠的,不會需要太多的變化從你

+0

感謝您的回答,這是非常豐富的,但我不認爲我可以模塊化足以解決我與作曲家的問題。 git子模塊對我來說是新的,看起來非常有用。謝謝! – strum