1

我们有一个定制的项目“kickstart”

这个 kickstart 可以很容易地添加模块。

当我们构建这些模块时,我们都基于版本控制的 kickstart 的一个干净的主副本来构建它们。

当我们开始一个项目时,我们创建一个空的 repo,将 kickstart repo 设置为远程,从远程拉取。当核心有更新时,我们再次从远程拉入。

这很好用。

但是我们有我提到的模块,我们将它们全部构建为一个新项目。

我们想要对所有这些模块进行版本控制。

模块的文件实际上驻留在模板中。

我们的工作流程看起来像这样

/site 1
  /kickstart
    /module1
      /module1 files
    /module2
      /module2 files
  /site 1 specific file
  /site 1 specific file

/site2
  /kickstart
    /modification of kickstart file for site2 only (e.g. config.php)
    /module2
      /module2 files
    /module3
      /module3 files
  /site 2 specific file
  /site 2 specific file

/site3
  /kickstart
    /modification of kickstart file for site3 only (e.g. config.php)
    /module1
      /module1 files
    /module3
      /module3 files
  /site 3 specific file
  /site 3 specific file

因此,站点 1、2 和 3 是它们自己的 git 存储库。

它们都包含 kickstart,它是一个 git 存储库

其中一些共享模块。

现在我们不从这些向上游推送,如果我们在站点 1 中确定某些东西运行良好,我们将检查 kickstart 的干净副本并在那里进行更改,然后将它们拉入所有不同的站点。模块也是如此。

但我的基本问题是,我们将模块放在哪里?他们取决于那里的启动。

一个想法是将它们作为 kickstart 的分支,我也听说过子模块和子树,但不知道它们是如何工作的。

构建此工作流程的最佳方式是什么?

4

1 回答 1

2

将这三个站点放在他们自己的 Git 存储库中(而不是使用一个具有三个分支的存储库),意味着您不必在站点 1、2 和 3 之间进行太多(如果有的话)合并:所有 3 个站点都只有一个远程:kickstart回购。

关于模块管理,每个模块都应该在自己的仓库中,以便轻松使用子模块或子树:

于 2012-09-13T05:55:31.420 回答