簡體   English   中英

客戶端-服務器Java項目的Git分支模型

[英]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-clientreleaseprep-server分支上,這將作為中間點,在該中間點,將刪除相應應用程序的不必要軟件包,並准備將其發布(不提供任何功能)添加)。 一旦准備好發布,這些分支將重新基於它們各自的release-clientrelease-server分支。 這些“發行”分支上的每次提交都代表應用程序的生產就緒狀態,並用版本號標記。

這是一個更好理解的圖形(我是程序員,而不是藝術家):

我的Git分支模型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM