
Git 在我心目中,是当之无愧的最佳文本管理工具。它具有以下特点:可版本追踪、可保存提交信息、差异存储,十分适合对文本更改进行追踪。
最近恰好在重写 CMS 系统,需要做文章的版本管理,于是写了个 NPM 库,实现类似于 Git 一样的文本版本管理系统:
https://github.com/ravelloh/text-version
你也可以试试在线 demo:
https://ravelloh.github.io/text-version

简单来说,相比于传统的文本版本记录方式,此库能让你直接使用一串字符串来管理文本的版本。这样,就不需要在数据库中单独做个表,每次有更新的时候就创建新的记录了。这也有助于减少空间占用。
目前已经实现这些功能:
这次抢到了个好名字(喜):
npm install text-version // or pnpm install text-version // or yarn add text-version // ES6 模块 import { TextVersion } from 'text-version'; // CommonJS const { TextVersion } = require('text-version'); const tv = new TextVersion(); // 创建实例 const tv = new TextVersion(); // 提交新版本 let storage = tv.commit('', '你好,世界!', 'v1'); storage = tv.commit(storage, '你好,世界!\n 这是第二行。', 'v2'); storage = tv.commit(storage, '你好,TypeScript !\n 这是第二行。'); // 查看版本历史 console.log(tv.log(storage)); //[ // { version: 'v1', isSnapshot: true }, // { version: 'v2', isSnapshot: false }, // { version: 'ycdf93', isSnapshot: false } //] // 查看指定版本 console.log(tv.show(storage, 'v1')); // "你好,世界!" // 查看最新版本 console.log(tv.latest(storage)); // "你好,TypeScript !\n 这是第二行。" console.log(storage); // :2:v1:你好,世界! // 2:v2:R6I8:\\n 这是第二行。 // 6:ycdf93:R3D4I11:TypeScript ! // 重置到指定版本 storage = tv.reset(storage, 'v2'); // 压缩存储空间 - 将 v2 设为快照,删除 v1 storage = tv.squash(storage, 'v2'); // v1 版本将被永久删除,v2 成为新的起始快照 高级示例详见 Github README.
https://github.com/RavelloH/text-version/blob/main/docs/README-CN.md
new TextVersion(compressionProvider?: CompressionProvider) commit(storage: string, text: string, version?: string): string提交新版本,保存文本更改。
storage: 当前存储字符串text: 要保存的文本内容version: 可选的版本名,默认使用内容哈希show(storage: string, version: string): string | null显示指定版本的文本内容。
storage: 存储字符串version: 要查看的版本名log(storage: string): VersionInfo[]显示版本历史日志,获取所有版本信息。
storage: 存储字符串latest(storage: string): string获取最新版本的文本内容。
storage: 存储字符串reset(storage: string, targetVersion: string): string重置到指定版本,删除目标版本之后的所有版本。
storage: 存储字符串targetVersion: 要重置到的版本squash(storage: string, targetVersion: string): string将指定版本设为快照并删除之前的版本,用于减少存储空间占用。
storage: 存储字符串targetVersion: 要设为快照的版本(该版本之前的所有版本将被删除)注意: 此操作不可逆,会永久删除目标版本之前的所有版本历史。适用于当版本历史过长时进行存储空间优化。
1 qi1070445109 16 天前 via Android 和 git 比有什么好处呢? |
2 AsuorZ 15 天前 gist 不香吗 |
3 RavelloH OP @qi1070445109 其实是我为自己的 CMS 准备的,使用一个字段来存文本记录就行,不用单独再创个表来存历史版本 |