文件的版本管理

前提

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

实现

什么时候计算变更?

有两个实现方案

方案一

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

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

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

怎么计算呢?

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

未解决:变更对比

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

相关推荐
Stella Blog13 分钟前
狂神Java基础学习笔记Day01
java·笔记·学习
李白的天不白14 分钟前
java处理跨域请求
java
云烟成雨TD18 分钟前
Spring AI Alibaba 1.x 系列【11】Spring AI Models 扩展:DashScope
java·人工智能·spring
小堃学编程20 分钟前
【项目实战】基于protobuf的发布订阅式消息队列(2)—— 线程池
java·开发语言
怨言.27 分钟前
Java内部类详解:从基础概念到实战应用(附案例)
java·开发语言
XiYang-DING28 分钟前
【Java】 Java 集合框架
java·开发语言
心勤则明34 分钟前
Spring AI Alibaba Skills 的渐进式披露与热更新实战
java·后端·spring
netyeaxi42 分钟前
Spring:如何查看Spring应用对外提供了哪些API接口?
java·spring
一只大袋鼠43 分钟前
MySQL 事务从入门到精通(上):概念、操作、特性、隔离级别全解析
java·mysql·事务
若鱼19191 小时前
JPA/Hibernate中一对一关联时不持有外键方的属性延迟加载为什么不生效?
java·spring