文件的版本管理

前提

现在在做一个在线生成文档的东西,就是用户填写的时候都是结构化的东西,不如单选框,多选框,富文本,图片之类的,最后要给用户生成文档或者ppt,或者pdf,然后要做一个版本对比的功能,粒度比较粗糙,只需要知道每次发布之后,有哪些章节发生了变更就可以,不关心具体哪一行或者哪一个字发生了变化。

实现

什么时候计算变更?

有两个实现方案

方案一

每次发布之前,统一计算所有章节的变更情况
方案二

把计算放在平时,每次保存或者更新,都计算一下当前章节的变更情况。

两种方案各有利弊,最终选择了第二种,这种的优点在于,不必等待发布操作即可看到变更情况,方便以后加功能吧。

怎么计算呢?

MD5,是的,就是计算章节的MD5,我们的章节可以人为划分成几部分,比如章节信息,内容块信息,等等,每次保存的时候,涉及到哪块儿就计算哪块儿的MD5,并和上一版本进行对比,保存一下变更情况。

未解决:变更对比

实际上就是git的diff功能,目前不支持,git的diff应该也是在每次执行的时候才去计算,这个之后再考虑了,留个文章给自己参考一下:Git 是怎样生成 diff 的:Myers 算法

相关推荐
Wang's Blog8 分钟前
Java框架 SpringCloud 快速入门: 服务拆分之服务远程调用
java·开发语言·spring cloud
Wang's Blog10 分钟前
Java框架 SpringCloud 快速入门: 路由断言工厂
java·spring·spring cloud
ym hyd 11118 分钟前
门诊挂号系统源码 Java+SpringBoot+Vue3 前后分离
java·vue.js·spring boot·毕设
杨丰玮41820 分钟前
C语言核心语法
java·c语言·开发语言·学习方法
海宇AI26 分钟前
Java数据工程:利用海宇婚恋风险报告优化高端婚恋实名与涉诉核验合规体验
java·人工智能
CEZ31 分钟前
中小企业上 WMS 该先上哪几块:JeeWMS 开源 Java 仓库管理系统的分批上线清单
java·开源
Wang's Blog40 分钟前
Java框架 SpringCloud 快速入门: Gateway 路由的过滤器配置
java·spring cloud·gateway
迅猛龙办公室1 小时前
python实现简单进度条
java·前端·python
斯内普吖1 小时前
(开源)宠物饲养系统实战指南 基于 Java + SSM + Vue + MySQL
java·vue.js·mysql·开源·宠物
知守观1 小时前
Spring Boot 2.1 → 3.5 迁移推演:这个 2018 年的项目会炸在哪
java·spring boot