如何合并从网站的开发副本到实时网站而不会丢失新内容的更改?

drupal.stackexchange https://drupal.stackexchange.com/questions/137

  •  16-10-2019
  •  | 
  •  

在现场生产副本的网站开发副本上合并工作的最佳程序是什么?自从开发开始最新功能以来,该网站通常会添加很多新内容。网站的大多数添加都将涉及数据库更改。因此,复制任何新文件很容易,但是数据库呢?您如何将更改与现有生产数据库合并而不丢失自上次更新生产站点以来添加的新内容?是否有任何有助于此的模块?

有帮助吗?

解决方案

对于内容类型,视图和结构的更改,请使用 特征 将数据库导出到代码。

对于内容迁移,有很多选项,但没有一个可靠的解决方案。一个例子是 部署套件.

其他提示

我在这里基本上已经采用了两种思维流派(三个思想流派,进行数据库差异,我不会讨论,因为复杂性很高)。

1)通过删除生产数据库并导入开发数据库的mysqldump来部署。可选地,在任何硬编码的绝对链接上,在SQL转储中引用DEV URL的任何硬编码的绝对链接之前,都会在REGEX查找/替换。将Dev db导入到产品中后,之后会自动运行SQL语句(通常是通过脚本)更改与dev不同的产品的所有设置(例如,您在变量表中具有某些连接设置,用于连接到您需要连接的外部系统更改为Prod外部系统而不是Dev版本)。

2)使用 特征 Budda提到的模块用于管理设置,并使用 节点导出 内容导出/导入的模块与 删除所有 模块。因此工作流是:

  1. 使用node_export和功能将节点/功能导出到文件
  2. (并希望)版本控制
  3. 加载产品系统上的文件
  4. 使用Drush或Admin界面加载功能
  5. 使用Drush Delete-All或Admin界面删除要导入的类型的所有节点
  6. 使用drush ne-import或管理员界面从您导出的节点文件中导入节点。

一个注意事项,我强烈建议采用标准工作流,其中内容仅为一个方向。 dev-> prod或prod-> dev(我更喜欢这个)。

我已经这样做了,并且在某些大系统上做到这一点,结果相当不错,但是总是有很多方法可以切成苹果,选择哪种方法最适合您。

SQL文件中实时站点副本和开发副本的转储数据库(对两个转储使用相同的参数和设置)。
然后,使用小比较工具比较两个SQL文件 审查员. 。它将与不同颜色并排显示文件差异。您也可以直接跳到差异(无需滚动)。检查差异并添加/编辑行到实时站点的SQL文件。确保该文件中没有开发环境的绝对路径/URL。那就完成了!是时候恢复实时网站的数据库了。
使您的生活更轻松: 在第一步中,仅转储那些已更改的表。例如,如果您已经编辑了一个针对单独表的开发副本中的模块,请仅转储此表。如果您不确定特定表,则整个数据库转储都可以。

许可以下: CC-BY-SA归因
scroll top