客户端 - 服务器Java项目的Git分支模型

时间:2015-06-16 23:54:05

标签: java git version-control branch

我有一个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中一起处理。

1 个答案:

答案 0 :(得分:1)

我的解决方案

  

这是我解决问题的方法;然而,这似乎非常   繁琐而难以贯彻。我的项目很多   比例子更复杂,规模更大,但事实并非如此   看起来像是一个很好的练习解决方案。

     

请注意,我不是Git的专家。

master分支将包含项目的所有源代码(每个包)。将对此分支进行常规开发提交,并将功能和修补程序分支合并到此分支上。准备发布后,master分支将重新定位到releaseprep-clientreleaseprep-server分支,该分支将作为中间点,其中相应应用程序的不必要的包将被删除,并且它将是准备发布(不应添加任何功能)。准备好发布后,这些分支将重新定位到各自的release-clientrelease-server分支。这些“发布”分支上的每次提交都代表应用程序的生产就绪状态,并将使用版本号进行标记。

这是一个更好理解的图形(我是程序员,而不是艺术家):

My Git Branching Model