我正在使用Kohana框架开发PHP(问题与PHP或Kohana无关,所以请继续阅读)。
这意味着我通过从Github克隆Kohana的回购开始我的所有项目,并开始构建我的应用程序。
然而,为了让我的生活更轻松,我创建了一个存储库 - 让它命名为base-app
,我根据自己的需要对框架进行了个性化。
基本上我创建了静态文件的文件夹结构,添加了一些JS和CSS文件,我将在以后的所有项目中使用它们(比如normalize.css,jquery.js,我的JS框架等)。我还注册了一些我写的子模块,并将这个新的仓库推到了遥控器上
大!现在我有一个基础应用程序(我喜欢称之为 skeleton ),每次我开始一个新项目时都可以克隆。
在大多数应用中,我们还需要一个身份验证系统。所以我继续发展
我创建了一个auth
子模块来帮助我,但我还需要为login
创建一些视图,控制器,JS和CSS文件(我不能只是放在子模块中), recover-password
,reset-password
等页面。命名为repo base-app-auth
,并推送到遥控器。
大!现在我有了一个基于base-app-auth
的新存储库base-app
,当我想创建一个已经实现的登录系统(控制器,模型,视图,js,css)的应用程序时,我可以克隆。 / p>
在我未来的至少两个项目中(可能还有许多其他项目),我还需要一个管理帐户(订阅)和付款的解决方案。
所以我继续发展。基于base-app-auth
我实施了一个接受付款(通过PayPal)和管理订阅的解决方案。此存储库还具有新视图,控制器,模型以及新的css和js文件。 (不,我不能简单地将它们放在子模块中)。
大!现在我有一个我可以克隆的存储库,当我想创建一个新的应用程序时,已经实现了登录系统和帐户/支付管理。
问题是现在我有3个存储库。保持同步是 * 的痛苦。
我的意思是,当我在base-app
中修复错误或在其中开发新功能时,我还希望其他两个存储库进行这些更改。所以我必须克隆另外两个并从base-app
拉出更改,然后将它们推回到远程。
我正在寻找更好的解决方案。
我可以想到一个可能的解决方案是将所有3个“应用程序”放在不同分支上的单个存储库中(因为它实际上是一个应用程序)。因此,当我启动一个项目时,我会克隆存储库并决定要检出的分支。
如果我不需要身份验证和帐户&付款管理功能我结帐base-app
分行。如果我需要身份验证但不需要帐户和付款我结帐base-app-auth
分支,依此类推。
这是一个很好的解决方案吗?还有更好的吗?在Git中管理这些“级联”项目的好方法是什么?