迁移协助
Drupal 的核心模块「Migrate Drupal」提供了从一个 Drupal 版本迁移到另一个 Drupal 版本的 API 支持,而「Migrate Drupal UI」则提供了一个简单的用户界面,用于从旧版本 Drupal 升级。
从 Drupal 6 到 Drupal 8 以及从 Drupal 7 到 Drupal 8 的更新在单语言站点上是稳定的。多语言站点的更新路径尚未完成。请参阅 从多语言 Drupal 6 升级到 Drupal 8 以获取有关 Drupal 6 - Drupal 8 多语言升级的简要信息,以及 多语言迁移的 meta 问题 以查看多语言迁移问题的清单。目前有几种方式来确保 D6-D8 和 D7-D8 更新路径的稳定性。
仔细测试你的网站更新并报告结果
当你将 Drupal 6 或 Drupal 7 站点更新到 Drupal 8 时,请务必仔细测试并验证结果。很可能你会发现某些东西并未如预期般更新。如果发生这种情况:
- 首先检查 从 Drupal 6 或 7 升级到 Drupal 8 的已知问题 页面是否已列出该问题
- 如果没有,搜索 Drupal 6 - Drupal 8 迁移的已开放问题 或 Drupal 7 - Drupal 8 迁移问题。
- 如果仍未找到你遇到的问题,请创建一个新的 核心迁移系统问题。报告新的迁移错误本身就是非常宝贵的贡献,有助于确保迁移的稳定性!
新报告的问题会被归类到「迁移系统」组件。极其重要的是你要尽可能提供详细的信息。
- 请在适用时提供更新前(Drupal 6/7)和更新后(Drupal 8)的截图。
- 尽可能具体地描述问题。
- 提供你认为与问题相关的站点额外信息。
- 优秀的问题报告示例:https://www.drupal.org/node/2853872
- 在原始问题报告中提供了简短描述、截图和注释。
- 问题摘要后来多次更新,因为在分析过程中发现了越来越多的信息。
- 更新问题摘要是修复过程中的重要环节。有时错误迁移可能非常复杂,保持问题摘要的最新状态将极大帮助迁移维护者和其他贡献者!
- 不要害怕——我们会尽可能撰写详细的错误报告!
协助测试补丁
如果你想帮助测试迁移补丁,你需要配置一个测试环境。始终将补丁应用到 Drupal 8 最新的开发版本。
- 关于使用 git 应用补丁的信息,请参阅 git 补丁开发者指南。
- 有关补丁的更多通用信息,请参阅 入门指南中的补丁部分。
帮助查找迁移问题的根本原因
如果你对 Drupal 及其数据模型更有经验,你很可能能帮助确定迁移错误的根本原因。因为迁移涉及数据,所以最重要的是理解:
- 数据在 Drupal 6/7 中的来源
- 以及它在 Drupal 8 中应该存放的位置
一些有助于理解数据来源的工具:
- Devel 模块 —— 非常适合检查 Drupal 6/7 中的原始数据。
- phpMyAdmin 或其他数据库浏览器可以帮助你查找 Drupal 6/7 中的数据来源。
- 如果你能确定 Drupal 6/7 中存储数据的表单,但无法在数据库中找到这些数据,你可以阅读 API 文档。在 Drupal 6/7 中打开存储数据的表单,复制字段并搜索:
site:api.drupal.org <输入要查找的内容>
在 Drupal 8 中,可以通过以下方式读取迁移配置:
- admin/config/development/configuration/single/export
- 选择「迁移」作为「配置类型」
- 选择你要检查的迁移项目
关于自动化迁移测试的几点说明
所有与 Drupal 8 核心相关的错误修复必须有自动化测试覆盖。如果你不熟悉自动化测试,也可以提交没有测试的补丁。这一节是针对想要参与测试的高级贡献者。
迁移必须经过测试,以确保测试机器人能够真正执行迁移。在为核心编写 D6/D7 到 D8 的迁移测试时,会使用 Drupal 8 核心中包含的数据库固定文件作为源数据:
- core/modules/migrate_drupal/tests/fixtures/drupal6.php
- core/modules/migrate_drupal/tests/fixtures/drupal7.php
- 了解更多关于生成迁移数据库固定文件
实际测试通常定义在对应模块的核心测试中,例如 core/modules/comment/tests/src/Kernel/Migrate/d7