我参与了一个项目,其中包括存储对大型分层文档(HTML格式文本)的编辑和更改。我们希望包括文本更改和结构更改的版本控制。
目前我们正在维护关系数据库中的文档部分树,但是当我们开始研究如何管理结构更改的版本时,很明显我们必须编写很多功能,版本控制系统提供。
我们不想重新发明轮子。是否有可能我们可以使用现有的版本控制系统作为数据存储,至少对于文档本身?据推测,我们可以通过向文件系统写出新版本,并将该目录保持在版本控制下(并以编程方式执行提交等)来实现,但如果我们可以通过代码直接与存储库进行交互会更好。
我们最熟悉的VCS是Subversion,但我对Subversion如何表示对目录结构的更改并不感到兴奋 - 如果我们能够看到特定的修订包括从第2章移动部分,那将会很好到第6章,而不仅仅是看到树的新版本。这听起来更像是像Mercurial这样的系统处理结构变化的方式。
有什么建议吗? VCS是否有公共API等等?如果重要的话,该项目采用Java(使用Spring)。
答案 0 :(得分:6)
也许你可以使用像Jackrabbit这样的JCR(JSR-170)兼容存储库。对我来说,你所描述的正是JCR的用途。看看this article。
答案 1 :(得分:2)
您当然可以通过API对SCM进行编程。查看SVNKit获取Java和Subversion,或JGit获取Java和Git。 Mercurial似乎没有提供这样的API。
无论您做什么,都可以在适当的API中包含您的实现,这样您就可以将一个SCM换成另一个SCM,或者在将来的某个阶段将SCM的概念包含在内。然而,这可能是解决问题的实用方法,值得进一步研究。
答案 2 :(得分:0)
尝试使用http://svnkit.com/进行Subversion。
答案 3 :(得分:0)
这里有一个纯Java SVN库SVNkit它可以被Eclipse SVN集成使用,因此它应该相当稳定。