我在我以前的工作中遇到過這個問題,現在再次出現在我現在的問題上,這意味着我要麼運氣非常差,要麼沒有意識到可以解決這個問題的一些工具或組織系統。管理不同組件版本之間的依賴關係的最佳方式是什麼?
在這兩種情況下,最終產品都由幾個獨立的組件組成,每個組件都通過與其鄰居之間商定的接口進行通信。問題是,隨着時間的推移,界面將發生變化,然後各個組件也必須更新,以便所有內容都可以繼續工作。
這本身並不是問題。問題在於,當試圖回溯到SCM歷史記錄時,這使得錯誤跟蹤非常困難,因爲在某些時候,您嘗試調試的組件將不再與系統的其他部分兼容,並且無法針對它們進行測試也沒有將它們回滾。
看看下面的例子:
- 說我們有一個客戶機/服務器產品,併爲簡單起見,無論是在完全工作狀態下開始了。我們將稱這些版本爲client-1.0和server-1.0。
- 經過一段時間後,對兩者都進行了錯誤修正和功能。現在我們處於client-1.7和server-1.2。
- 現在接口在服務器中發生變化,所以客戶端也必須更改:server-2.0和client-1.8。
- 現在,客戶端版本爲1.9,發現了一個錯誤,我們想要測試以前的版本以查看它停止在服務器上的工作。但是,如果我們回到1.8以上,那麼服務器也必須恢復。
我給出的示例場景非常簡化,但問題歸結爲:執行哪個版本的客戶端和服務器相互兼容的最佳方式是什麼?
我已經考慮通過文檔來做到這一點,但不可避免的是,人性會勝利,有人忘記更新他們或他們的其他組件。我也想過通過匹配版本來實現它(即,當服務器命中2.0時,客戶端也得到提升),但問題是客戶端可能有其他組件依賴關係,這與服務器無關,所以它沒有意義全面更新他們的版本。
要解決這個問題必須有一些解決方案。有沒有人對我的研究有任何建議或起點?