Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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 - Fatal编程技术网

Git 如何保持子站点的更新?

Git 如何保持子站点的更新?,git,Git,所以我有一个用Coldfusion编码的网站,它基本上是一个专门的CRM。我把这个卖给客户。假设我把它卖给10个客户……我会把最新的代码推广给所有客户。随着时间的推移,这些客户中的任何一个都可能要求对其站点进行特定的更改 我经常对我的主代码进行更改/错误修复/新功能等。用所有子站点仍然包含的共享代码更新其他10个站点的最佳方法是什么 现在,我只是使用Araxis Merge将我的主代码与他们的站点进行比较,并复制相关的更改,等等 我只是在想,如果这扩展到我想要的水平,那么继续更新将是一场噩梦 我

所以我有一个用Coldfusion编码的网站,它基本上是一个专门的CRM。我把这个卖给客户。假设我把它卖给10个客户……我会把最新的代码推广给所有客户。随着时间的推移,这些客户中的任何一个都可能要求对其站点进行特定的更改

我经常对我的主代码进行更改/错误修复/新功能等。用所有子站点仍然包含的共享代码更新其他10个站点的最佳方法是什么

现在,我只是使用Araxis Merge将我的主代码与他们的站点进行比较,并复制相关的更改,等等

我只是在想,如果这扩展到我想要的水平,那么继续更新将是一场噩梦

我在本地开发环境的所有站点上都使用git来跟踪更改,但我认为版本控制在这种情况下没有帮助


谢谢你的建议。

从你的问题来看,他们的代码听起来很相似,但站点A包含特定功能的代码,但站点B没有该代码。我建议让所有子站点共享完全相同的代码库

根据这些子站点的设置方式以及每个子站点的自定义级别,这可能是一项简单的任务,也可能不是一项简单的任务。很可能您需要进行大量重构才能使其正常工作

从长远来看,这将使您的生活更加轻松,因为您可以使用基于单个repo的连续部署解决方案一起部署所有子站点

您可能已经在做一些这方面的工作,但以下是我将如何设置它:

  • 每个子站点使用相同的数据库(或相同数据库的集合)。数据库必须设置为多租户,因此每个表都有一个“子站点ID”列

  • 然后,您的代码将根据唯一的子站点ID有条件地显示/隐藏这些客户端的某些自定义功能。如果每个站点都有自己的
    Application.cfc
    ,您可以在其中设置站点ID。您可能会在整个代码中使用大量的

  • 一旦每个站点都在完全相同的代码库上运行,就可以设置连续部署

一个例子是,当某些东西被合并到master中时,使用Github webhook触发Jenkins。然后Jenkins将构建一个docker容器,然后将其部署到服务器上。大概是这样的:


基本上,如果你走这条路,你所做的就是创建一个有一个真相来源的平台。如果您需要对单个站点或所有站点进行更改,您可以编辑一个repo,从中部署所有站点。

我会将共享代码提取到它自己的git存储库中,并将其作为子模块添加到每个客户端
,我认为版本控制在这种情况下没有帮助。。。但我想是的。例如,您可以在
master
分支中修复所有核心错误,然后将其合并到其他分支中。@tim我不是git的天才……因此在这种情况下,所有姐妹站点都将是master的分支,所以所有内容都在一个repo中?谢谢,非常深入。我想我喜欢一个回购协议的想法,所有站点都是从master的分支机构部署的。只是不确定我能不能设置它…还在学习git。