[請益] 用 Git 實現不同版本的方法?

看板Soft_Job作者 (朔月星痕)時間3年前 (2021/01/07 17:51), 編輯推噓21(21055)
留言76則, 25人參與, 3年前最新討論串1/1
目前工作上遇到這樣的問題 有 Project A 因為不同客戶需求不同分出了 Project A'、Project B (Fork),但 Project A 的更新又得 merge 進 A' 及 B 有點繼承的感覺 但是實際上 Merge 的結果卻不是我想的 示意圖: https://i.imgur.com/5tGuKIJ.jpg
請問這樣的狀況是有什麼地方做錯 或者是說這樣的 case 分 branch 就好呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.53.25 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1610013117.A.209.html

01/07 17:55, 3年前 , 1F
最好是可以模組化把general function包成library
01/07 17:55, 1F

01/07 17:56, 3年前 , 2F
分成不同的project給不同客戶 customer project只存
01/07 17:56, 2F

01/07 17:57, 3年前 , 3F
客製化的東西 general function都放回library
01/07 17:57, 3F

01/07 17:57, 3年前 , 4F
然後用引用library的版本控制功能推進
01/07 17:57, 4F

01/07 17:58, 3年前 , 5F
repo 的內容是 web service
01/07 17:58, 5F

01/07 17:58, 3年前 , 6F
但是客製的部份大都是另外新增的
01/07 17:58, 6F

01/07 17:58, 3年前 , 7F
所以想說是不是可以有繼承 A 的方法
01/07 17:58, 7F

01/07 17:58, 3年前 , 8F
善用分支是非常推薦的作法
01/07 17:58, 8F

01/07 17:59, 3年前 , 9F
主要用 Gitlab 進行,剛剛有測試這樣的狀況在 Github
01/07 17:59, 9F

01/07 17:59, 3年前 , 10F
是不能用的
01/07 17:59, 10F

01/07 18:11, 3年前 , 11F
推薦分project的原因是因為最後客戶常會要加新功能
01/07 18:11, 11F

01/07 18:12, 3年前 , 12F
到時候就會有A'', B', B''
01/07 18:12, 12F

01/07 18:34, 3年前 , 13F
rebase就好
01/07 18:34, 13F

01/07 18:46, 3年前 , 14F
Project A的修改都開 feature分支,feature 在合併到 A,A',B
01/07 18:46, 14F

01/07 18:53, 3年前 , 15F
建議拆project較好 誰知道客戶會不會提出什麼鬼需求
01/07 18:53, 15F

01/07 19:50, 3年前 , 16F
我之前的做法是一個mono repo project ,,A B 共用的部
01/07 19:50, 16F

01/07 19:50, 3年前 , 17F
分會是共用的package ,,然後 A B 有自己的 package 做
01/07 19:50, 17F

01/07 19:50, 3年前 , 18F
客製化的東西還有去引用共用的部分
01/07 19:50, 18F

01/07 19:55, 3年前 , 19F
除非你可以把共用核心抽出模組,客制功能做成 plugins
01/07 19:55, 19F

01/07 19:55, 3年前 , 20F
否則兩個 branch 就只會漸行漸遠。但你要每次都人工 merge
01/07 19:55, 20F

01/07 19:56, 3年前 , 21F
人工 check 每行 code 也不是不行
01/07 19:56, 21F

01/07 20:02, 3年前 , 22F
A檔案應該有發生衝突吧?合併過程中是有指定use rem
01/07 20:02, 22F

01/07 20:02, 3年前 , 23F
ote or use local 嗎?
01/07 20:02, 23F

01/07 20:16, 3年前 , 24F
和 19 樓想法類似,這應該是從程式碼的層次下手,不然之
01/07 20:16, 24F

01/07 20:16, 3年前 , 25F
後如果有更多客製化呢?建議可以去研究一下 Clean Archi
01/07 20:16, 25F

01/07 20:16, 3年前 , 26F
tecture / Configuration Management 這些東西。
01/07 20:16, 26F

01/07 20:31, 3年前 , 27F
我覺得你應該用config。不同案子吃不同config,其他程式
01/07 20:31, 27F

01/07 20:31, 3年前 , 28F
碼一樣
01/07 20:31, 28F

01/07 20:32, 3年前 , 29F
維持一套code就好
01/07 20:32, 29F

01/07 20:33, 3年前 , 30F
Feature也可以做成feature toggle, 然後吃config決定哪
01/07 20:33, 30F

01/07 20:33, 3年前 , 31F
些feature要不要開
01/07 20:33, 31F

01/07 20:59, 3年前 , 32F
為什麼不做在一起 再弄個權限控管 區分邏輯就好
01/07 20:59, 32F

01/07 21:15, 3年前 , 33F
現在的公司也有類似的問題,我們的情境是有兩台不同
01/07 21:15, 33F

01/07 21:15, 3年前 , 34F
device 上面要用一樣的 android app,然後部分功能因
01/07 21:15, 34F

01/07 21:15, 3年前 , 35F
應 device 的狀況調整。目前是用兩支branch 去做,有
01/07 21:15, 35F

01/07 21:15, 3年前 , 36F
新增功能的話就 cherry-pick 過去。
01/07 21:15, 36F

01/07 21:29, 3年前 , 37F
這個基本上最後都是業務問題不是技術問題,上面擋不住
01/07 21:29, 37F

01/07 21:29, 3年前 , 38F
什麼神奇需求都接,你怎麼設計都沒用
01/07 21:29, 38F

01/08 00:37, 3年前 , 39F
推樓上
01/08 00:37, 39F

01/08 07:52, 3年前 , 40F
應該由程式碼架構去著手,你這個做法會常常衝突,後續
01/08 07:52, 40F

01/08 07:52, 3年前 , 41F
的人也很難維護
01/08 07:52, 41F

01/08 15:29, 3年前 , 42F
謝謝各位的回覆
01/08 15:29, 42F

01/08 15:29, 3年前 , 43F
目前我應該會用 config 的方式去設定
01/08 15:29, 43F

01/08 15:29, 3年前 , 44F
然後再重新 fork
01/08 15:29, 44F

01/08 15:29, 3年前 , 45F
核心部份仰賴 ProjectA 更新
01/08 15:29, 45F

01/08 15:29, 3年前 , 46F
其他客制就 call ProjectA 的功能再加上要改的東西
01/08 15:29, 46F

01/08 15:29, 3年前 , 47F
如果是 project A 的環境變數相關或功能就用 config
01/08 15:29, 47F

01/08 15:29, 3年前 , 48F
處理
01/08 15:29, 48F

01/08 15:29, 3年前 , 49F
真的感謝大家提供這麼多意見
01/08 15:29, 49F

01/08 15:35, 3年前 , 50F
rebase
01/08 15:35, 50F

01/08 17:45, 3年前 , 51F
最後還是選fork,好奇不使用branch 的原因是?
01/08 17:45, 51F

01/08 18:02, 3年前 , 52F
直接開成新repo阿
01/08 18:02, 52F

01/08 19:48, 3年前 , 53F
開分支阿,頂多你推到不同的 remote
01/08 19:48, 53F

01/08 20:01, 3年前 , 54F
我比較好奇圖中為何做了merge後A file還是A file,不是應
01/08 20:01, 54F

01/08 20:01, 3年前 , 55F
該變成A與A’ merge file
01/08 20:01, 55F

01/08 20:19, 3年前 , 56F
我覺得thumbe31949你們需要的應該是dynamic feature或
01/08 20:19, 56F

01/08 20:19, 3年前 , 57F
設定不同的buildTypes並設定sourceSet來做
01/08 20:19, 57F

01/08 21:34, 3年前 , 58F
上下游剪patch也行吧
01/08 21:34, 58F

01/09 02:41, 3年前 , 59F
fork 的原因我覺得用起來和 branch 一樣
01/09 02:41, 59F

01/09 02:41, 3年前 , 60F
但是在不同的 repo 的感覺
01/09 02:41, 60F

01/09 02:41, 3年前 , 61F
因為平時的 branch 就有很多大家各自開發的項目,所
01/09 02:41, 61F

01/09 02:41, 3年前 , 62F
以就比較沒有考慮
01/09 02:41, 62F

01/09 02:41, 3年前 , 63F
還是大家有其他的建議(?
01/09 02:41, 63F

01/09 05:02, 3年前 , 64F
同p大疑問 為何merge之後不是變A跟A’的merge file
01/09 05:02, 64F

01/09 05:03, 3年前 , 65F
A.file->A’.file是指對A進行更新還是根本是A.file換了
01/09 05:03, 65F

01/09 05:03, 3年前 , 66F
名字
01/09 05:03, 66F

01/09 20:06, 3年前 , 67F
A' 是對A做修改 至於說為什麼結果這樣
01/09 20:06, 67F

01/09 20:06, 3年前 , 68F
我可能需要看 Gitlab 設定才知道
01/09 20:06, 68F

01/09 20:06, 3年前 , 69F
我也很困惑,因為他和我想的不一樣
01/09 20:06, 69F

01/11 14:31, 3年前 , 70F
可能你不知道branch 可以用'/'來分群組
01/11 14:31, 70F

01/11 14:33, 3年前 , 71F
不過採用fork 也不是不行,只是merge時是用push/pull
01/11 14:33, 71F

01/12 02:31, 3年前 , 72F
什麼 居然有 / 分群?!
01/12 02:31, 72F

01/12 02:31, 3年前 , 73F
另外圖的問題發現是 Gitlab 在 conflict 的時候 Prev
01/12 02:31, 73F

01/12 02:31, 3年前 , 74F
iew 的 Bug... 害我誤會了
01/12 02:31, 74F

01/12 11:30, 3年前 , 75F
讓code可以吃configuration,不要直接分兩版code
01/12 11:30, 75F

01/13 13:07, 3年前 , 76F
git patch
01/13 13:07, 76F
文章代碼(AID): #1Vzjcz89 (Soft_Job)