Wiki和SVN等记住之前内容的实现

freeflying1222 2014-08-10 08:45:09
wiki和svn,git等都有这种功能,能记住某个文件的更改历史。这是怎么实现的呢?
比如我要开发一个类似wiki的系统,需要记住文章更改的历史,用asp.net开发,wiki部分怎么实现呢?
...全文
304 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
freeflying1222 2014-09-07
  • 打赏
  • 举报
回复
引用 3 楼 caozhy 的回复:
关键是文件增量比较算法的选择,它可以在数据量很大,但是修改很小的时候大幅降低存储的开销。
这些东西有没有已经封装好了的类库之类的,.net程序可以直接引用,而不需要自己去从头实现的?
  • 打赏
  • 举报
回复
你说的那些版本系统,它的首要任务是随时可以返回任意历史版本(比如说现在版本号是1900号,我想返回1879号)的完整的目录树。 你设计的数据结构可以方便地返回这个目录树历史数据吗?这是首要任务。 而不是你说的什么“文件更改的历史”。
  • 打赏
  • 举报
回复
如果你要模仿一个系统,那么先要把它的目标弄清楚,了解得相对完善一些。如果你只是抓住一个你自己的需求就去模仿人家的系统,可能很容易走样。一旦某个地方弄反了,弄得过于简单了,将来再重新设计系统时就繁琐了。
  • 打赏
  • 举报
回复
svn的数据结构很简单。 首先,客户端每一次提交,都会在svn数据库“顶”端为相应的工程新建一个新的“版本”。这个新版本本身是一个目录,是一个“根目录”,它内部包含子目录,也包含文件。(子目录也是一样)。因此,每当创建新版本,整个目录树生成一个完整复制品。 但是目录树上的文件,则都是“引用”的。如果一个文件没有修改,那么新的目录树上的文件引用旧的物理文件;如果文件修改了,则新的目录上的文件引用新的物理文件。 注意以上两点,就可以设计这样一个版本管理系统了。 每当查询一个文件的历史版本信息,就是遍历最近各个“顶”端版本树中的同一个路径下的文件信息,如果其对物理文件的引用(与前一版本相比)不同了则知道此版本号下有修改,否则没有修改。
threenewbee 2014-08-17
  • 打赏
  • 举报
回复
你需要一个表去记录快照。每次变更,都产生一条历史记录。 当然,svn git这样的系统,关键是文件增量比较算法的选择,它可以在数据量很大,但是修改很小的时候大幅降低存储的开销。 你可以下载git svn甚至开源的media wiki源代码自己研究。
wangnaisheng 2014-08-17
  • 打赏
  • 举报
回复
建立历史记录表,不同的操作去记录,查看的时候去查询历史记录表就行。这样也可以实现。
freeflying1222 2014-08-16
  • 打赏
  • 举报
回复
没人知道?自己顶一下

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧