对多个系统的版本控制

时间:2013-08-09 20:48:44

标签: git version-control project production-environment

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

我们已经创建了一个基于网络的系统,我们将其销售给我们的客户。我们做所有托管,什么不是。如果我们有一个新客户购买系统,我们从不同的客户复制一个并更改徽标等。

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

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

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

现在我认为这可以通过git,通过某种可以合并到主分支的分支构造来实现,但我不太确定这个并且找不到任何关于它的东西。

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

2 个答案:

答案 0 :(得分:1)

任何版本控制系统都应该可以实现,不仅仅是Git。

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

如果您发现核心系统中存在错误,请将其修复为master,并将master合并到所有客户分支中。

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

并且,由于每个客户分支都是针对您的客户的,具有独特的自定义更改,因此您不需要从客户分支合并到主客户。您将始终从主人到客户分支,从不相反。

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

答案 1 :(得分:0)

你可能希望查看post commit hooks - 你可以有一个列表,(可能是一个python字典),其中的分支在哪些客户区域,并且每当有提交你可以,如果它特定于一个客户,拉和&amp;更新他们的目录,但如果它在主干中,你可以自动在所有客户目录中进行拉取和更新。

关于钩子的git书章节是here,并有几个例子。