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