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