[討論] 共用程式碼管理

作者: ripple0129 (perry tsai)   2020-02-24 00:53:54
拋磚引玉一下
看看各家對於共用程式碼的管理方式
先說痛點
在不同的服務中
有必須共用的程式碼
譬如説DB schema的model
譬如説常用的utils
相同的商業邏輯但不同服務都需要使用到
如果不整理起來就會變成是
當一處更新就要複製貼上到每個服務
目前我主要處理方式為
git submodule
在每個服務下建立一個共用的submodule
一個服務有更新其他服務就git pull即可
共用也牽涉到很多問題
最常遇到的就是依賴問題
A服務與B服務共用一個class
但是C服務不需要
而這個class依賴某個套件
則可能逼迫C服務必須安裝此套件
但如果共用的submodule要細分
則可能要變成AB用AC用BC用ABC用
四個submodule
管理起來不會更容易
是說還有沒有更優雅的解決方式
作者: x000032001 (版廢了該走了)   2020-02-24 01:08:00
monorepo
作者: NDark (溺於黑暗)   2020-02-24 01:14:00
我提供我的解法. 基本上跟你的嘗試很類似.用git submodule但是每個模組都獨立放一個branch.並搭配不同的資料夾.master 就是所有模組的集合.如果單只要一個功能. pull的時候就只checkout那個branch.如果需要復合的功能. 可以checkout out多個repo.也可以 merge一個複合型branch來供應這個專案需求.測試也是另一個branch.這樣專案使用就不需要引入測試專案.
作者: ssccg (23)   2020-02-24 09:53:00
用build來管理相依性,不用版控來管理
作者: APTON (瑋瑋)   2020-02-24 19:14:00
好奇大家怎麼處理!
作者: newsbielt703 (3o'clock)   2020-02-24 21:07:00
Lerna manorepo?
作者: Phenomenon (Kuma)   2020-02-25 20:59:00
Monorepo
作者: alan3100 (BOSS)   2020-02-26 21:14:00
dependency management,沒有明確最小buildsize需求不建議自己搞, runtime載入很容易怎麼死都不知道下游自己客制維護又費時費力,autotest跟monitor要很強壯

Links booklink

Contact Us: admin [ a t ] ucptt.com