客户机-服务器Java项目的Git分支模型
我有一个Java项目,它在两个需要分发的主要应用程序中使用一组通用代码:服务器和客户机。该项目分为以下几个包,每个应用程序都需要如图所示的包客户机-服务器Java项目的Git分支模型,java,git,version-control,branch,Java,Git,Version Control,Branch,我有一个Java项目,它在两个需要分发的主要应用程序中使用一组通用代码:服务器和客户机。该项目分为以下几个包,每个应用程序都需要如图所示的包 Packages | Client | Server ------------------------------+--------+--------- com.example.game.server | No | Yes com.example.game.client |
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客户端
或releaseprep服务器
分支上,该分支将作为删除相应应用程序的不必要包并准备发布的中点(不应添加任何功能)。一旦准备好发布,这些分支将被重新设置到各自的release client
和release server
分支上。这些“发布”分支上的每个提交都表示应用程序的生产就绪状态,并用版本号标记
这里有一个更好理解的图形(我是程序员,不是艺术家):