一尘不染

如何编写简单的版本控制系统代码?

algorithm

我想做一个简单的版本控制系统,但是我对如何构造数据和代码没有任何想法。

这是一个简短的示例:

  1. 用户登录
  2. 上载文件时,用户有两个选择:
    • 提交新文件
    • 提交文件的新版本

用户应该能够看到树。(不同的版本)该树最多可以包含2个级别:

|
|--File_A_0
 \--File_A_1
 \--File_A_2
 \--File_A_3
 \--File_A_4

文件也有2种类型,即最终版本(最新批准的版本)和草稿版本(最新上传的文件)。文件将物理存储在服务器上。每个文件均由一个(或多个)用户拥有,并且只有一个组。

编辑: 组代表一组文档,文档一次只能由一个组拥有。用户不依赖组。

开始编辑:

这是我所做的,但是效率不高!

id_article | relative_group_id | id_group | title | submited | date | abstract | reference | draft_version | count | status

id_draft | id_file | version | date

但是很难扩展。我认为这是因为小组参数…

结束编辑

所以问题是:

  • 我该如何计划我的数据库?
  • 什么样的信息对本作品的版本应该有用?
  • 文件夹,文件的结构如何?
  • 您需要什么样的技巧,提示来做这种工作?

(该应用程序是使用PHP和Zend Framework开发的,数据库应该是mysql或postgresql)


阅读 290

收藏
2020-07-28

共1个答案

一尘不染

看在上帝的份上, 不要 。您真的不想走这条路。

停下来思考一下大局。您想保留文档的早期版本,这意味着在某个时候,有人会希望看到其中的某些早期版本,对吗?然后他们会问: “版本3和版本7有什么区别?”
然后他们会说: “我想回滚到版本3,但是保留我在版本5中所做的一些更改,好吗?”

版本控制是不平凡的,并且不需要重新发明轮子-那里有许多可行的版本控制系统,甚至有些是免费的。

从长远来看,学习这些系统之一的API并编写一个Web前端代码将更加容易,该Web前端可以为用户提供他们正在寻找的功能的子集(现在)。

您不会为用户编写文本编辑器,对吗?

2020-07-28