[請益] 使用git管理source code問題已刪文

看板Soft_Job作者 (500CC)時間6年前 (2019/04/28 16:22), 6年前編輯推噓9(909)
留言18則, 10人參與, 6年前最新討論串1/1
大家好! 想請問關於git repository規劃問題(因為團隊人員變多,案子也變多)。 目前團隊負責維護Linux kernel,假設有三個版本,A、B、C版, 每一版本kernel各有三個案子,所以現有的管理方式如下: 1. 有三個kernel的git repository。 2. 有九個project的git repository(以patch方式存放)。 3. 九個案子分別只對負責的RD開放。 4. local端實際使用方式: a. 先拉kernel。 b. 再拉project patch。 c. 在kernel source 目錄使用git am patch,變成完整專案。 問題: 1. 是否有比現行方案更好管理方式? 使用此方式,最後變成每個案子都只有一個branch... 雖然說多人同時開發一樣是先pull再push,但是無法達成git flow。 希望是可以有master、feature、release、hotfix這樣一個完整的流程。 如果每一個案子是一個完整kernel repository + project repository, 感覺也是蠻蠢,因為案子只會越來越多,而且事實上也不需要那麼多份 kernel repository。 2. 在server上只有三個kernel repository,建很多branch因應不同案子, 但是這樣有辦法分別對每個branch做權限管控嗎? 如果不行,變成加入此kernel repository的RD,可以拉全部的branch, 該RD明明只負責一個案子,加入後,卻可以拉三個案子的code, 這不符合公司source code開放原則。 3. 另外一個想法是,有辦法一樣維持三個kernel repository、 九個project的git repository,但不是以patch方式存放, 每個project的git repository可以有完整git flow開發紀錄, 不知道有辦法做的到嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.222.198 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1556439727.A.330.html ※ 編輯: classic500ml (114.42.222.198), 04/28/2019 16:25:10 ※ 編輯: classic500ml (114.42.222.198), 04/28/2019 16:30:24 ※ 編輯: classic500ml (114.42.222.198), 04/28/2019 16:34:32

04/28 16:49, 6年前 , 1F
kernel用nexus那種存放,然後project從nexus拉kernel
04/28 16:49, 1F

04/28 16:51, 6年前 , 2F
實際使用方式可以參考npm、maven、gradle的作法
04/28 16:51, 2F
感謝分享,我會研究看看

04/28 17:32, 6年前 , 3F
不需要為了git flow而git flow,挑出最適合自己的方式即可
04/28 17:32, 3F
就是因為覺得現在的管理方式不好,才想說找看看有沒有更好方法XD

04/28 19:02, 6年前 , 4F
九個project當做master,kernel當做submodule,這樣是
04/28 19:02, 4F

04/28 19:02, 6年前 , 5F
可以run git flow
04/28 19:02, 5F
感謝分享,我會研究看看

04/28 19:03, 6年前 , 6F
kernel的版本變化頻繁嗎? 試試 Git Submodules?
04/28 19:03, 6F

04/28 19:04, 6年前 , 7F

04/28 19:04, 6年前 , 8F
不確定是否符合情境
04/28 19:04, 8F
kernel變動不會很頻繁,我研究看看,謝謝 更新: 是變動很頻繁才對,抱歉回答錯誤...

04/28 22:29, 6年前 , 9F
我也覺得 kernel 用 submodule 加在其他 project 中
04/28 22:29, 9F
好多人推submodule,很久以前自己是有用過subtree,印象中線圖會從旁邊長一條出來, 覺得很醜XD ※ 編輯: classic500ml (118.150.164.77), 04/28/2019 22:39:14 ※ 編輯: classic500ml (118.150.164.77), 04/28/2019 22:43:23

04/29 09:38, 6年前 , 10F
直接開3個project與各3個branch?
04/29 09:38, 10F

04/29 09:42, 6年前 , 11F
覺得可以用submodules+1
04/29 09:42, 11F

04/29 11:50, 6年前 , 12F
subtree是把另一專案的objects 一樣包進母專案的.git/
04/29 11:50, 12F

04/29 11:51, 6年前 , 13F
submodule則是把子專案的commit ID關聯到母專案
04/29 11:51, 13F

04/29 11:53, 6年前 , 14F
雖然子專案(kernel)需要分別fetch,但也確保權限設定
04/29 11:53, 14F

04/29 11:54, 6年前 , 15F
的彈性,你的case的確用submodule是最佳解
04/29 11:54, 15F

04/29 11:54, 6年前 , 16F
另外branch的權限設定請參照Gitolite
04/29 11:54, 16F
目前實際測試下來,submodule的確可以滿足需求,謝謝。

04/29 14:47, 6年前 , 17F
可以參考android 用的repo
04/29 14:47, 17F

04/29 15:39, 6年前 , 18F
建議用 repo tool 和 gerrit 來管理
04/29 15:39, 18F
repo方式也有測試,關於repo方式可以再指點一二嗎? 我目前在manifest.xml設定要拉的repository是沒有太大問題, 但我的project修改都是基於kernel的,有些甚至是直接修改driver, 這樣似乎沒辦法使用repo方式? 畢竟我project repository從第一個commit開始, 就是base在原始kernel source code上。 謝謝 ※ 編輯: classic500ml (118.150.164.77), 05/02/2019 22:02:19 ※ 編輯: classic500ml (118.150.164.77), 05/02/2019 22:14:21 ※ 編輯: classic500ml (118.150.164.77), 05/02/2019 22:18:42
文章代碼(AID): #1SnMAlCm (Soft_Job)