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