2011-01-11 70 views
5

我正在一個網站上工作,我將能夠創建項目並將數據上傳到我的每個產品。數據可能主要以電子表格文檔,圖像,pdf等形式出現。理想情況下,我想使用VCS(git pref)類型的設置,每次更新特定文檔時,我都可以將該文檔提交給回購。關於如何實施的任何想法都會有所幫助。使用GIT管理文檔

回答

8

你可以在每次上傳後在子shell中調用git。

但我不認爲使用任何VCS它是文檔版本控制的好方案,特別是在Web應用程序中。這是因爲對於類似辦公室的文檔,您將主要使用二進制數據。當涉及到二進制數據時,VCS吸引(無例外)。你將無法做任何差異,元數據管理不適合這樣的事情 - 作者的提交大多是有限的特定帳戶(你可能會使用一個系統帳戶的git),沒有額外的信息(基本文件除外信息:大小,權限,ctime)被存儲,所以你必須自己存儲它(作者,Web應用程序用戶的權限,額外的元數據)。另請注意,有幾個用戶可以同時提交數據,因此版本控制中會有分支機構。當你擁有龐大的數據集(並且使用二進制辦公文件時它會比你想象的要快),你將無法分割這樣的存儲庫。

國際海事組織,在這裏使用VCS給你很小的收益,並引入其他問題。

我建議在數據庫中保留元數據(文件名,修訂版,其他內容),並在磁盤上保留文件修訂版。將每個文件的修訂保留在單獨的唯一目錄中。一個提示:不要使用來自上傳的文件名。使用散列函數根據內容和元數據計算唯一名稱。

1

沒有一個通用的「承諾上保存」功能(至少有一個與你所提到的文檔類型相關聯的所有編輯綜合)

最簡單的方法將是一個後臺作業這將提交(或例如Git中的git add -A && git commit -m "xxx"),例如每5分鐘一次。

其實,Mark Longair評論:

flashbake被設計爲從cron運行做什麼,你在以某種合理的提交信息的第二段描述。
雖然我不確定那是什麼原始海報。

Original project here

  • 自動備份是好的,除非你有您要查看的增量歷史文件。
  • 源代碼管理對於該歷史非常有用,但大多數工具都希望作者能夠在此過程中手動提交更改。
  • =>無縫源代碼管理解決方案將自動備份的便利性與源代碼版本控制的強大功能相結合。
+0

實際上,如果文件將被添加上傳,服務器端會在上傳後自動添加並提交。 – cezio 2011-01-11 10:15:05

+0

我從來沒有想過這樣的事情,所以沒有嘗試過自己,但flashbake https://github.com/commandline/flashbake/wiki旨在從cron運行,做你在第二段中描述的某種合理的提交信息。不過,我不確定這就是原來的海報。 – 2011-01-11 16:26:18

+0

@Mark:有意思,謝謝。我在回答中包含了您的評論(以及其他一些信息)。 – VonC 2011-01-11 16:35:55

1

作爲Cezio回答的一個分支,如果您真的想使用VCS進行版本控制,請考慮LaTeX。由於它基本上是編譯成文檔的源代碼(通常爲PDF,通過pdflatex),因此它是版本控制的合理候選者。