背景:我在一個學生方程式車隊作業(我們每年都開發和制造一輛賽車),直到現在我們還沒有任何版本控制。從現在開始,我們將使用 GitHub 來管理我們的專案。這些專案在不斷發展,所以即使汽車運行著某些版本的 PCB 和軟體,它們都在不斷發展。
設定:我們為所有不同的專案(儀表板、資料采集、BMS、安全電路和邏輯 PCB...)提供一個存盤庫。截至目前,我們存盤了使汽車作業的每個專案的當前版本,以及一些常用庫和檔案。
問題:我們如何定義發布的概念?換句話說,如果知道所有專案的發展速度不同,如何管理它們?
請記住,一切都在不斷開發中,所以可能會在 3 月推出新版 BMS,在 9 月推出新版儀表板,但比賽是在 7 月至 8 月,所以我們競爭的汽車可能有或不是當年開發的專案。
我想到的解決方案如下:為每個專案使用一個發布分支。使其成為受保護的分支,并在比賽前將它們合并到主分支,以記錄每個專案在比賽中的哪個版本,每個專案都有一個“安全版本”。
我覺得這不是一個好主意,因為我以前從未對這么大的東西使用過版本控制,我想在這方面為團隊做出最好的決定,因為存盤庫是臨時的,并且一個錯誤的決定可能會在未來幾年造成很多傷害。
非常感謝您提前!
uj5u.com熱心網友回復:
您的問題可以使用 git 的submodule功能來解決。
https://git-scm.com/book/en/v2/Git-Tools-Submodules
創建一個新的空存盤庫
mkdir reslease_repo
git init reslease_repo
更改為這個新的 repo 并在單獨的 subdier 中簽出其他 repos reslease_repo
cd reslease_repo
git clone [url-of-first-module] first-module
git clone [url-of-second-module] second-module
# ...
進入每個子模塊并檢查應該作為交付一部分的提交
cd first-module
git checkout [branch|tag|commit-id]
然后回傳 reslease_repo 并添加模塊目錄
cd ..
git submodule add [url-of-first-module] first-module
對所有模塊重復此操作。
模塊的內容不會被簽入到reslease_repo.
克隆時reslease_repo添加 git 引數--recurse-submodules以獲取它們的內容以及主存盤庫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/387334.html
上一篇:Colab無法保存對GitHubPUBLIC和PRIVATE報告的更改
下一篇:克隆單分支后克隆另一個分支
