我正在研究軌道狂熱商務安裝上相當大且相當定製的紅寶石。我試圖決定如何最好地設計它,以便我可以繼續升級狂歡,而不用擔心它會打破我的修改。分叉與覆蓋
在過去,我遵循一般的狂歡文檔,並通過使用裝飾器,覆蓋和有時覆蓋視圖完全修改。這工作正常,但有兩個問題。
1.)當通過裝飾器打開和擴展類時,可能很難推斷程序。如果你可以打開這個文件,例如Spree :: Product,然後查看代碼,然後在祖先中工作,而不是知道系統中各個部分的類正在被打開和修改,那麼它更容易。
2.)如果沿着這條路線走下去,可能很難升級Spree。如果你已經覆蓋了一個視圖,並且它在下一個版本的spree中發生了變化,你就無法知道。你所能做的只是升級,希望你的一個測試或者手動測試能夠在測試結束時提取。
上述的好處當然是它是一個非常簡單的方式來開始修改,如果你做了很少和很小的修改,那麼它可能很好。
但是,有沒有更好的選擇?我一直在考慮的一種方法是直接分叉Spree並直接在分叉的Spree代碼庫中進行更改。當我想要升級時,我可以簡單地將任何新的更改從spree中拖放到我的分叉回購中。這種方法的優點是,git會在我覆蓋的視圖發生變化時通知我。然後我可以手動合併,並忽略它或採取行動。有沒有人在這裏做過這個練習?我忽略了什麼缺點?
我認爲你會有很多改變,你將不得不理清你改變了什麼,以及什麼樣的改變。 它最有可能比您正在使用的狂歡提議更加痛苦。至少你可以爲你重寫的每種方法編寫測試,看看它們在升級後是否仍然通過。 我個人不會升級Spree,除非我在軟件中需要新功能,並且通常可以預測即將發佈的功能。 對於我的一位客戶,我們使用了一個較舊的版本,以便在多個商店中保持相同的代碼庫。 – Rafal