【问题标题】:Version control over multiple systems对多个系统的版本控制
【发布时间】:2013-08-09 20:48:44
【问题描述】:

标题可能有点误导,因为我不知道该怎么命名。

我们创建了一个基于网络的系统,我们可以将其出售给我们的客户。我们做所有的托管,什么不做。如果我们有一个购买系统的新客户,我们会从其他客户那里复制一个并更改徽标等。

现在,如果我们进行了更改,假设我们发现了一个错误并修复它,我们必须检查所有系统并更改有错误的文件。这是我正在考虑改变的事情。

基本上,我正在寻找一种简单的方法来保持这种组织并易于推动生产。但也希望灵活,如果客户需要特定功能,我们能够轻松更改它,而不是使用此功能更新每个系统。

因此,每当我们对系统核心进行更改时,我想以某种方式将固定文件推送到所有其他系统,而不是手动进行,这是一种既麻烦又愚蠢的做法。

现在我认为这对于 git 来说是可能的,通过某种可以合并到主分支中的分支构造,但我对此不太确定,也找不到任何相关信息。

有谁知道这叫什么或者有办法做到这一点?

【问题讨论】:

    标签: git version-control project production-environment


    【解决方案1】:

    这对于任何版本控制系统都应该是可能的,不仅仅是 Git。

    假设您的核心系统位于 master 分支中。为每个客户创建一个新分支。

    如果发现核心系统的bug,在master中修复,并将master合并到所有客户分支中。

    与此同时,您可以在客户分支机构中进行独特的更改。但是,例如,如果您在客户分支中更改了index.php,然后您在 master 中修复了该文件中的错误,那么当您将 master 合并到客户分支时,您可能会遇到冲突,您必须手动解决.

    而且,由于每个客户分支都针对您的客户进行了独特的自定义更改,因此您不需要从客户分支合并到主分支。您将始终从 master 分支到 customer 分支,永远不会相反。

    如果您在核心系统中只进行了微小的更改和错误修复,那么此设置应该可以正常工作,偶尔会有轻微的冲突。但是,如果您对核心系统进行大量更改,您可能会遇到很多冲突,从而使设置变得难以维护。这一切都取决于客户分支和主分支中独特变化的重叠。如果重叠很少或没有重叠,那么即使是大范围的更改也很容易合并。

    【讨论】:

      【解决方案2】:

      您可能希望查看提交后hooks - 您可以有一个列表(可能是 python 字典),其中包含哪些分支位于哪些客户区域以及何时有提交,如果它是特定的对于一位客户,拉取并更新他们的目录,但如果它在后备箱中,您可以自动在所有客户目录中进行拉取和更新。

      关于 hooks 的 git book 章节是 here 并且有几个例子。

      【讨论】: