我正在研究一個小應用程序,允許我在每次更改之前修改文件和每個文件的版本。我希望應用程序執行的是唯一標記每個文件,以便每當打開相同的文件時,該特定文件的歷史記錄就可以恢復。我沒有使用任何大版本控制工具。我該如何在語法上做到這一點?我如何唯一標記文件並且它是多種版本?
回答
簡單的解決方案。使用已存在的verison控件(例如Git),但是如果你真的想這樣做,那麼試試這個。
每次創建一個新版本的文件的以前版本複製到一個單獨的隱藏的目錄,並在其中認爲文件的校驗和目錄中的配置文件。 Checksum將「更可能」是獨一無二的,因爲它的文件散列值(每次文件更改,校驗和會不同 - 你需要自己計算校驗和。)
當你打開一個文件時,檢查是否存在是目錄中的配置文件,並將校驗和與已打開的校驗和進行比較。如果它們是相同的,那麼你在同一個文件中。這就是它的工作原理。
你可以使用校驗和來優化它。因此,如果用戶進入文件改變了事情,就會變回原來的狀態並保存。校驗和應該返回相同的東西(除非你包括修改的日期和時間等)
每個文件夾應該有一個名稱,它遵循一個模式(filenameVn.n例如someTextFile.txt.v1.0),那麼你將能夠找出你在歷史中瀏覽的目錄應該說的是什麼。
另一種方法是簡單地一些標記複製的文件,並追加到它(校驗和可能?版本號?),那麼你就不需要額外的文件夾結束。
另一種方法是調用任何記錄的校驗文件並保存版本的歷史(連同相應的校驗)在一個單獨的配置文件,然後當你想要找出該文件提到它,你想要訪問被調用。因此,每個版本將被引用基於自己的校驗和(如在Git中)。
因此,總結每個文件版本將存儲在某個地方,你將能夠驗證它們是否相同(所以你可以優化通過避免存儲多個文件而不改變它們並浪費空間),並且您將能夠動態地確定每個版本的位置並訪問它。
希望它讓你如何開始多一點理解。
有趣的解決方案 – Kobojunkie 2013-02-24 20:45:46
- 1. 如何使用不同版本的V8編譯nodejs並且它是否聰明?
- 2. 我正在嘗試將文本從控制檯記錄到文本文件,並且未創建文本文件
- 3. 如何從webview中選擇文本並且不復制它?
- 4. Apache Flink(如何唯一標記作業)
- 5. 檢索數據並顯示它以另一種形式標記
- 6. 如何選擇哪種類型是唯一標識符
- 7. 強制Subversion將「未版本控制」文件標記爲已解決且爲最新版本
- 8. 如果依賴項是唯一的快照版本並且調用了安裝,maven會選擇什麼?
- 9. SVN - 如何處理一個項目,二種版本的,唯一不同的人有幾個其他文件
- 10. 我如何定位一個div並且它是處理點擊的孩子?
- 11. 如何從我的服務器運行我的.app文件並且版本錯誤?
- 12. 唯一文件標識符
- 13. 我們如何版本JavaScript文件
- 14. 我如何只選擇唯一的記錄(基於標準)
- 15. 將多個記錄合併爲一個記錄,並且有多列
- 16. 支持多種插件版本
- 17. 這是一種在PHP中創建唯一URL標記的好方法。
- 18. 標記唯一的行嗎?
- 19. 記事本++崩潰並覆蓋文件的空版本
- 20. 包含一個JavaScript文件,因爲它是用腳本標記寫的
- 21. 在一行文本文件中查找多個唯一字
- 22. 生成各種版本的Boost UUID(通用唯一ID)
- 23. 如何將多個CSS文件編譯爲zip/tar文件並將它們包含在HTML頁面標記中?
- 24. PL/SQL光標選擇唯一記錄並打印在平面文件中
- 25. SVN - 爲每個版本化文件自動生成唯一標識
- 26. 如何獲得另一個EXE的彙編版本(不是文件版本)?
- 27. 如何將多個CSV文件合併爲一個,只有唯一的值
- 28. 我如何知道我是唯一一個打開文件句柄的人?
- 29. Android版多種語言的版本
- 30. 刪除TextField中的重複文本mysql並且無法使其唯一
我很困惑,是你的問題如何編寫你自己的版本控制系統,讓您不必使用現有的? – 2013-02-24 18:33:08
那麼你說你不*使用現有的版本控制解決方案 - 顯而易見的問題是「爲什麼不?」 - 我建議你嘗試使用Git,Mercurial或類似的東西。你不一定需要用服務器或類似的東西進行*集中式版本控制。當地的東西可能會很好。 – 2013-02-24 18:33:11
我寧願讓我自己的代碼爲我做這件事。 – Kobojunkie 2013-02-24 18:52:10