我有一个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中一起处理。
答案 0 :(得分:1)
这是我解决问题的方法;然而,这似乎非常 繁琐而难以贯彻。我的项目很多 比例子更复杂,规模更大,但事实并非如此 看起来像是一个很好的练习解决方案。
请注意,我不是Git的专家。
master
分支将包含项目的所有源代码(每个包)。将对此分支进行常规开发提交,并将功能和修补程序分支合并到此分支上。准备发布后,master
分支将重新定位到releaseprep-client
或releaseprep-server
分支,该分支将作为中间点,其中相应应用程序的不必要的包将被删除,并且它将是准备发布(不应添加任何功能)。准备好发布后,这些分支将重新定位到各自的release-client
和release-server
分支。这些“发布”分支上的每次提交都代表应用程序的生产就绪状态,并将使用版本号进行标记。
这是一个更好理解的图形(我是程序员,而不是艺术家):