首页 / 技术文章地图 / 正文

【工具链】配置表 diff 工具:变更说明自动生成

发布:2026-09-20 18:25 | 作者:996 技术组 | 3 阅读
完整课程入口:996 全套课程体系Lua 学习路径幂尔框架 mirs.cn

实战应用:用在哪里

配置表更新后,"这次改了什么"需要一份准确的说明:公告要引用、测试要按变更点验证、出问题要回溯。人肉对比两张大表必然遗漏。配置表 diff 工具对比新旧两版,自动输出结构化变更清单:新增了哪些 id、删除了哪些 id、哪些 id 的哪些字段从什么值改成了什么值。

diff 实现:逐 id 逐字段比对

lua
local function diffTable(old, new)
    local changes = {}
    for id, nRow in pairs(new) do
        local oRow = old[id]
        if not oRow then
            changes[#changes + 1] = { type = "ADD", id = id, row = nRow }
        else
            for k, v in pairs(nRow) do
                if oRow[k] ~= v then
                    changes[#changes + 1] = { type = "MOD", id = id, field = k, old = oRow[k], new = v }
                end
            end
        end
    end
    for id in pairs(old) do
        if not new[id] then changes[#changes + 1] = { type = "DEL", id = id } end
    end
    return changes
end

三类变更(ADD/MOD/DEL)分别输出,MOD 类带字段名与前后值。数值字段的变更额外输出差值(new - old),涨跌一目了然。

输出格式与归档

diff 结果生成两份:人读的 Markdown 报告(按变更类型分组、MOD 按字段排序),机器读的 JSON(进版本库与变更历史)。每次配置更新,diff 报告与配置一起提交,形成完整的变更历史链。回溯某次线上问题的时候,按日期找到对应 diff 报告,几分钟内就能确认"那次更新动了哪些数值"。

扩展用法

diff 工具还能反向使用:上线前把本次变更清单发给各系统负责人确认(涉及本系统的变更打勾确认),把"改配置影响别的系统"的事故消灭在发布前。再进一步,对 MOD 类变更按字段名分类统计(价格类变更 N 条、爆率类变更 M 条),数值调整的集中度一眼可见——集中在单一系统的批量变更,往往就是那次事故的源头。diff 工具一百来行代码,是配置管理里投入最小、收益最直接的自动化。

diff 报告的字段名用中文别名列对照(配置字段名加策划可读名),策划自查时不需要记忆程序字段名。报告头部加变更摘要统计(新增几条、修改几条、删除几条),一眼掌握本次更新的规模。

作者履历与出处
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理,讲解体系出自多年商业端开发生产一线。作者团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
© 威海旷世互娱 · 返回文章地图 · 课程体系 · 幂尔框架