Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 在主分支上维护数百个自定义分支_Git_Github_Version Control_Merge - Fatal编程技术网

Git 在主分支上维护数百个自定义分支

Git 在主分支上维护数百个自定义分支,git,github,version-control,merge,Git,Github,Version Control,Merge,目前,我们在共享存储库中为PHP应用程序提供了一个主分支。我们有500多个客户在订阅我们的软件。出于不同的目的,他们中的大多数人在他们的项目中进行了一些定制。自定义项只能从文本字段名开始,最多可以是全新的功能和模块,也可以是数据库中的新表/列 我们面临的挑战是维持数百家定制分支机构,并将其分发给客户。我们不时提供新功能并更新我们的主分支,然后我们希望将主分支更改推送到定制分支,以便将定制分支更新到最新版本。 不幸的是,这将导致定制代码与主代码之间的大量冲突。我们需要大量的人力通过每个分支机构解决

目前,我们在共享存储库中为PHP应用程序提供了一个主分支。我们有500多个客户在订阅我们的软件。出于不同的目的,他们中的大多数人在他们的项目中进行了一些定制。自定义项只能从文本字段名开始,最多可以是全新的功能和模块,也可以是数据库中的新表/列

我们面临的挑战是维持数百家定制分支机构,并将其分发给客户。我们不时提供新功能并更新我们的主分支,然后我们希望将主分支更改推送到定制分支,以便将定制分支更新到最新版本。

不幸的是,这将导致定制代码与主代码之间的大量冲突。我们需要大量的人力通过每个分支机构解决所有冲突。这是一种非常低效的方式,在我们解决冲突时,人为错误不断发生


我正在寻找一种有效的方法来维护自己客户的发布分支中的所有定制代码,但当我们发布新功能时,它们可以与主分支保持更新,而只需要很少的努力来合并代码

我认为没有一个简单快捷的答案。事实上,有这么多的定制允许在您的产品基本上意味着你有500个独立的产品

在我看来,第一步是将核心产品从所有定制中分离出来。然后创建一个单独的存储库,在其中保存所有客户机分支,并将核心产品视为一个依赖项。您可以通过git子模块或某种依赖性包解决方案来实现这一点

这样,每个客户端都取决于核心产品的特定版本,您可以控制某个客户端何时升级到新版本


当然,这意味着您的核心产品必须支持某种形式的功能切换和/或模块覆盖,以允许进行定制。

您这个可怜的、可怜的灵魂..交叉发布