使用数据库编写自己的版本控制系统?
Writing your own version control system using a database?
我想知道解决这个问题的最佳方法:
- 用户写了一篇文章并按保存。 (保存到数据库)
- 用户编辑了上一篇文章并按保存。 (比如 git 提交)
- 重复
在用户编辑文章的每个阶段,我想向用户展示每次提交期间所做的更改(增减)。
我想到了两种方法:
将文章内容的所有迭代保存在数据库中。也就是为每次保存创建一个新行,其中包含文章的全部内容。然后,通过检查差异来比较后端的文件。
+-----------+---------+----------------------------+
| ArticleID | Version | Body |
+-----------+---------+----------------------------+
| 1 | 3 | This is a random article. |
| 1 | 2 | This is a random article |
| 1 | 1 | a random article |
+-----------+---------+----------------------------+
或者像下面这样通过存储来记录对文章的所有更改,然后当用户想要查看版本 1 和版本 2 之间的差异时,获取版本 1 并附加所做的更改
+-----------+---------+-------------------+-------------------+---+
| ArticleID | Version | CharacterPosition | + | - |
+-----------+---------+-------------------+-------------------+---+
| 1 | 3 | 24 | . | |
| 1 | 2 | 0 | This is | |
| 1 | 1 | 0 | a random article | |
+-----------+---------+-------------------+-------------------+---+
我会建议选项 1。如果您使用选项 2,当有人从不同位置添加或删除字符时,您会遇到麻烦。此外,如果您想查看三个版本之间的区别,这会给编码带来一些困难。
我想知道解决这个问题的最佳方法:
- 用户写了一篇文章并按保存。 (保存到数据库)
- 用户编辑了上一篇文章并按保存。 (比如 git 提交)
- 重复
在用户编辑文章的每个阶段,我想向用户展示每次提交期间所做的更改(增减)。
我想到了两种方法:
将文章内容的所有迭代保存在数据库中。也就是为每次保存创建一个新行,其中包含文章的全部内容。然后,通过检查差异来比较后端的文件。
+-----------+---------+----------------------------+ | ArticleID | Version | Body | +-----------+---------+----------------------------+ | 1 | 3 | This is a random article. | | 1 | 2 | This is a random article | | 1 | 1 | a random article | +-----------+---------+----------------------------+
或者像下面这样通过存储来记录对文章的所有更改,然后当用户想要查看版本 1 和版本 2 之间的差异时,获取版本 1 并附加所做的更改
+-----------+---------+-------------------+-------------------+---+ | ArticleID | Version | CharacterPosition | + | - | +-----------+---------+-------------------+-------------------+---+ | 1 | 3 | 24 | . | | | 1 | 2 | 0 | This is | | | 1 | 1 | 0 | a random article | | +-----------+---------+-------------------+-------------------+---+
我会建议选项 1。如果您使用选项 2,当有人从不同位置添加或删除字符时,您会遇到麻烦。此外,如果您想查看三个版本之间的区别,这会给编码带来一些困难。