[英]Git branching model for client-server Java project
我有一個Java項目,該項目在需要分發的兩個主要應用程序中使用一組通用代碼:服務器和客戶端。 該項目被組織為以下軟件包,每個應用程序都需要如所示的軟件包。
Packages | Client | Server
------------------------------+--------+---------
com.example.game.server | No | Yes
com.example.game.client | Yes | No
com.example.game.core | Yes | Yes
com.example.game.core.physics | No | Yes
com.example.game.ui | Yes | No
com.example.game.utils | Yes | Yes
com.example.game.networking | No | Yes
org.library.sourcecode | Yes | Yes
我想將客戶端和服務器作為jar分發,僅包含與各個應用程序相關的軟件包,而不包括任何不必要的代碼。 最好每個應用程序(服務器和客戶端)都有一個git分支,其中每個提交代表一個發行版本(請參閱下面的答案)。 應該一起跟蹤整個項目(服務器+客戶端)的所有提交歷史記錄(意味着其中包含所有代碼的一個“開發”分支?)。 我怎樣才能做到這一點?
請注意, 我不希望使用多個存儲庫,因為客戶端和服務器代碼是如此緊密地捆綁在一起,應該在git中一起處理。
這是我解決問題的方法; 但是,這似乎非常麻煩且難以執行。 我的項目比該示例復雜得多,規模更大,這似乎不是一個好的實踐解決方案。
請注意,我絕不是Git的專家。
master
分支將包含該項目的所有源代碼(每個程序包)。 將對該分支進行常規開發提交,並將功能和修補程序分支合並到該分支。 一旦准備好發布,則master
分支將重新建立到releaseprep-client
或releaseprep-server
分支上,這將作為中間點,在該中間點,將刪除相應應用程序的不必要軟件包,並准備將其發布(不提供任何功能)添加)。 一旦准備好發布,這些分支將重新基於它們各自的release-client
和release-server
分支。 這些“發行”分支上的每次提交都代表應用程序的生產就緒狀態,並用版本號標記。
這是一個更好理解的圖形(我是程序員,而不是藝術家):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.