2012-11-09 145 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