2012-11-09 134 views
0

我正在使用docx4j来加载,处理和保存Word文件。一切都很完美,但有一件事我不知道如何实现它。 我想要的就像版本控制 - 这意味着如果您保存文档,应该可以恢复此文档的早期版本(例如,通过只保存增量)。也许你可以描述它应该是像SVN或Git那样可以返回到早期版本的文件。 问题是我不知道有什么可能意识到这一点。所以我希望你们任何人都可以帮助我。如果有人至少知道一个软件包或其他可以在一般情况下使用文件而不是使用docx文件的其他软件,那就没问题了。 感谢您的帮助!Java版本控制

编辑:对不起,我的问题是不准确的。这是我在这里的第一篇文章,将来我会改进;)

+2

为什么你不想使用SVN或Git? –

+0

我真的不明白为什么你提出要求版本控制的帖子,然后用版本控制排除。 – djechlin

+0

是否有一个与Java的svn交互的api?因为保存docx文件的用户不应该注意到后台发生了什么。如果有什么东西可以使用svn处理,就像在java中的sql处理一样,我会非常迷人。 –

回答

0

我认为你应该使用Git进行此操作,我找到了一个名为JavaGit的Java API ,因此您可以轻松访问存储库。 使用Git,您可以拥有一个本地存储库,您可以在其中提交文件和切换版本。如果您需要它,您还可以将数据推送到远程位置。

更好的使用JGit就像吉安说的!

+0

谢谢。我会尝试。我知道git,但当我在这里问这个问题时,我并不这么认为。 –

+0

我很确定JavaGit现在已经被JGit弃用了。请注意,最近的更新是2008年的一个alpha版本。 – Gian

+0

是的你是对的,他应该像你发布一样使用JGit,但不能删除这个答案,因为它被接受。 – tbraun89

0

最简单的方法是使用工具diffpatch。它们被用作CVS的核心。我假设你想在Windows中运行你的应用程序,他们没有预装。我不知道使用这个工具的Windows版本是否容易/舒适,但你总是可以尝试自己编写类似的功能。在这里,您可以找到有关查找文件之间的差异并修补它们的非常好的教程:http://tuts.pinehead.tv/2012/09/18/introduction-using-diff-and-patch/当您知道功能时,很容易就可以自己编写类似的东西。

5

JGit是一个Git的Java实现,它可以在很少依赖的情况下工作。 SVN和CVS存在类似的库。考虑到高品质解决方案的存在,家酿一个版本控制系统几乎肯定是一个可怕的想法!

+0

但是请记住Git实际上并没有做delta。每次都是完整的快照。 –

+0

这听起来不太准确。据我所知,它不会执行每个文件的增量,但它会执行每个树的增量。 – Gian

+0

当然,对。它的确如此。 –

1

如果您想对文档版本控制一些纯java implementatoin,也许你可以去:Jackrabbit

类似的问题已经被问过。在这个问题上的第一个答案(标记为正确的)也适用于Jackrabbit:使用版本控制系统作为数据后端

0

这可能是一个棘手的事情来实现自己,所以我不会推荐它。

我对你的环境了解不多,但是如果你能够使用现成的版本库,你将会为自己节省很多的痛苦。您可以尝试直接使用Git或SVN,这可能是您的用例最简单的解决方案。

但是,由于您在谈论MS Office文件,因此您可能正在实施某种形式的企业文档管理工具。在这种情况下,JCR规范旨在通过版本控制和其他元数据功能来访问存储库中的文件。这里是specification

Apache Jackrabbit项目提供了该规范的开源实现,开发者版本Alfresco也是如此。

选择正确的解决方案将取决于用户试图对这些文件做什么,您的部署环境是什么样的(不要尝试在Windows上承载Gi​​t,k?),以及如何自定义当前的代码库是(标准的Servlet容器?Java EE?home-rolled?)。

祝你好运!

+0

遵循JCR思路,不用提CMIS,WebDAV/DeltaV(几个前任之一)。 – JasonPlutext