使用版本控制系统作为数据后端

时间:2010-03-25 20:48:15

标签: java version-control

我参与了一个项目,其中包括存储对大型分层文档(HTML格式文本)的编辑和更改。我们希望包括文本更改和结构更改的版本控制。

目前我们正在维护关系数据库中的文档部分树,但是当我们开始研究如何管理结构更改的版本时,很明显我们必须编写很多功能,版本控制系统提供。

我们不想重新发明轮子。是否有可能我们可以使用现有的版本控制系统作为数据存储,至少对于文档本身?据推测,我们可以通过向文件系统写出新版本,并将该目录保持在版本控制下(并以编程方式执行提交等)来实现,但如果我们可以通过代码直接与存储库进行交互会更好。

我们最熟悉的VCS是Subversion,但我对Subversion如何表示对目录结构的更改并不感到兴奋 - 如果我们能够看到特定的修订包括从第2章移动部分,那将会很好到第6章,而不仅仅是看到树的新版本。这听起来更像是像Mercurial这样的系统处理结构变化的方式。

有什么建议吗? VCS是否有公共API等等?如果重要的话,该项目采用Java(使用Spring)。

4 个答案:

答案 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集成使用,因此它应该相当稳定。