git - 多个模块(主题)的推荐工作流程

标签 git workflow git-branch git-submodules branching-and-merging

我有一个结构如下的应用程序 (cms):

BASE:
    /application/
    /public/
        themes/
           default/
           mobile/

这是我们所有项目的基础中央存储库。然后项目有自己的皮肤: (基于 /default/ 主题)

CLONE1:
    /application/
    /public/
        themes/
           default/
           mobile/
           own/
           ...
           own-theme-12/

(此应用有 12 个基于默认主题的自定义主题)。

整个事情就是维护应用程序并使所有克隆与 BASE 保持同步。

现在,我们添加 BASE 作为远程仓库:

(/clone1/)$ git remote add base-repo /path/to/base.git

然后在需要时 pull 更新:

(/clone1/)$ git pull base-repo develop

/application 中的 .php 文件被修改时,一切正常。当我们在 BASE repo 中修改 default 主题中的文件时,问题就开始了(例如 reset.css 中的拼写错误)。我们需要在 CLONE1/default 主题和所有 CLOEx/own-x/ 主题中进行这些更改。

当然需要一些 bash 脚本来告诉在哪里复制和提交更改,但是如何在没有 merge 冲突的情况下保持整个事情同步?

我们使用git flowdefaultmobile 主题现在不在单独的分支中。我们需要他们吗?我们还没有使用子模块。

组织此工作流程的方式有很多种,但您会选择哪种方式最合适?

最佳答案

您可以使用 git-subtree帮助解决这类问题。基本上,您正在做的是基于上游应用程序构建自定义应用程序,您的自定义应用程序有两种更改:应用程序修复和特殊主题。您想要获取应用程序修复并将它们发送到上游,但您不想将您的特殊主题发送到上游。

如果您在顶层创建两个子树:一个用于您的上游应用程序,一个用于您的主题,然后您可以使用 git-subtree 拆分/merge 它们。从上游继承的主题可以从 app 目录符号链接(symbolic link)到 themes 目录。所以你得到这样的东西:

    /app/code/*.php
    /app/themes/default/
    /app/themes/mobile/
    /themes/default -> ../app/themes/default
    /themes/mobile -> ../app/themes/mobile
    /themes/own-1/

当你想向上游发送应用更改时,你可以做类似的事情

    git subtree split --prefix=app --rejoin

关于git - 多个模块(主题)的推荐工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4722921/

相关文章:

git - SVN到GIT存储库迁移,错误: could not lock the config/metadata file

performance - Git注意到性能和替代方案

sharepoint - 从列表中的 SharePoint 用户字段获取用户名

git - 删除不在远程的分支

git - 在一次运行中删除多个分支

git - 如何获取我 fork 的 git repo 的所有分支

django - 混帐/ Django : Granular code permissioning/availability

architecture - 基于Web(GUI)的 Multi-Tenancy 模型工作流平台

Django:如何跟踪线性(但灵活)的项目管理工作流程?

Git:找到两个分支的最近共同祖先