搜尋
首頁開發工具VSCode聊聊VSCode中的歷史儲存策略

 VSCode增加了保留檔案本地歷史功能,這篇文章就來帶大家聊聊VSCode中的歷史儲存策略,希望對大家有幫助!

聊聊VSCode中的歷史儲存策略

昨天更新 VSCode,發現 VSCode 也增加了保留檔案本機歷史功能。回想起前不久為了讓 Yank Note 增加歷史記錄功能,摳破了腦袋,構思了好久歷史記錄儲存策略。感嘆要是 VSCode 早發售幾個月,我還能有個參考。 【推薦學習:《vscode入門教學》】

不過當我看了 VSCode 的歷史儲存策略後:這麼粗暴?

VSCode 的策略

VSCode 1.66 版本的時間軸中可以展示檔案本地歷史了,效果是這樣

聊聊VSCode中的歷史儲存策略

針對這個功能,VSCode 也增加了一些配置:

There are also new settings to work with local history:

  • #workbench.localHistory. enabled - Enable 或 disable local history (default: true).
  • workbench.localHistory.maxFileSize - File size limit when creating a local history entry ( default: 256 KB).
  • workbench.localHistory.maxFileEntries - Local history entries limit per file (default: 50).
  • workbench.localHistory.exclude - Glob patterns for excluding certain files from local history.
  • workbench.localHistory.mergeWindow - Intervalring in seconds duther further changes are added to the last entry in local file history (default 10s).

右鍵點選歷史條目,有選單可以直接在系統管理員中找到文件某個歷史記錄的副本。

因此可以推斷出,VSCode 為每一個保存/撤銷等操作,在一定時間視窗(預設為10s)內,儲存一個檔案到資料夾。透過特殊的文件命名(保留時間資訊)來定位歷史記錄。

這也太粗糙了,一個檔案就是一個版本唄。

Typora 的策略

然後說下當時研究的 Typora 的策略。 Typora 在 macOS 上有非常精美的文件歷史回溯介面

聊聊VSCode中的歷史儲存策略

#看樣子它應該是用的系統的「時間機器」來實現版本回溯的。所以這個功能在 Windows 上也就沒有了。

Yank Note 的策略

我設想中的歷史版本,有幾個目標:

  • 最重要的目標是盡量避免資料遺失。

  • 歷史記錄不要佔用太多體積,最好能增量記錄。

  • 極端情況下要方便使用者還原資料。

  • 歷史記錄應該可以標記和備註

#針對第一個目標,我希望能保留使用者最近的編輯版本,不要捨棄。而 Yank Note 有自動儲存功能,也就有了第二個目標,不要佔用太多空間,也不要產生太多檔案。所以最開始想的類似 VSCode 那種,時間窗口 檔案保存的策略,就不行了。

針對第三個目標,我不想引入自訂的格式,例如 Git,或資料庫。因為如果使用者遺失了數據,在軟體也不方便找到歷史記錄的情況(軟體損壞,檔案誤刪等),使用者要可以進入歷史目錄,把檔案找回來。

後續:有個使用者誤刪了一個文檔,回收站也找不到了,就透過這種方法恢復的。

再考慮第四個目標,最後我選擇了使用zip 檔案的方式來保存檔案歷史版本,雖然在寫入和讀取歷史上會消耗一點運算效能(10多兆大文件歷史記錄也基本上沒感知),但最終效果還是很好的。

最終方案:

  • 每個文件由檔案名稱和路徑Hash 拼出一個zip 套件檔案名稱

  • 每次寫入文件,同時往這個zip 檔案中寫入一個新版本檔案

  • 移動和重新命名檔案時候同步更改zip 檔案的名字

  • 最大歷史版本數可以做一個限制。

  • 版本備註和標記資訊可以存在壓縮的備註欄位中。

通常會編輯一個文件的時候,由於自動保存的機制,當前版本和上一個版本之間的差異很小,因此理論上往壓縮文件中添加一個新的版本文件,壓縮檔案整體大小增加應該很小才對。不過後來發現並非如此,這時我才意識到 Zip 檔案壓縮的特性:每個檔案分別壓縮,再合起來打包。也即是說往壓縮包新增檔案的時候,並不會跟其他檔案一起壓縮。

針對這種情況,我採取兩次壓縮的策略:第一次把壓縮率設為 0,僅僅打包,這樣 zip 包內都是檔案的原始資訊。第二次將整個打包檔案壓縮一次,這下壓縮程式就可以考慮整體的資訊來做壓縮了,這就實現了「增量更新」的目的。

後面寫腳本測試,一個普通長度的文件,保存 1000 個版本,也才佔用 50KB。

使用了幾個月下來,我的歷史檔案目錄也才佔用 700 多 KB 的空間,裡面大部分歷史記錄檔案只有幾 KB 大小。反觀 VSCode,使用這兩天歷史目錄就佔了 2M。

聊聊VSCode中的歷史儲存策略

進一步

針對歷史儲存,我還進一步想了一些保存策略

#相對於最後一次儲存時間,保留:

  • 過去10分鐘內的每一個版本
  • 過去1小時內每分鐘一個版本
  • 過去24小時每小時一個版本
  • 每日保留一個版本
  • 已標記的備份

#不過目前看來是不需要了,目前的策略簡單,各方面也達到了我的預期。

更多關於VSCode的相關知識,請造訪:vscode教學! !

以上是聊聊VSCode中的歷史儲存策略的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:掘金社区。如有侵權,請聯絡admin@php.cn刪除
Visual Studio:綜合開發環境簡介(IDE)Visual Studio:綜合開發環境簡介(IDE)Apr 23, 2025 am 12:02 AM

VisualStudioismicrosoft'sflagshipide,支持multipleProgrammingLanguagesandEnhancingCodingQodings.1)ItoffersFeaterSfeaturesLikeInkIntellisensensensensensensensensensensensensensensensensenseforcodePrediction,Multi-TabbedInterfaceForProproject Managements,andToolsfordEbugging,andToolsfordEbugging,Repactioning,andVersionControl.2

Visual Studio:探索免費和付費產品Visual Studio:探索免費和付費產品Apr 22, 2025 am 12:09 AM

VisualStudio的免費版和付費版的主要區別在於功能的豐富程度和支持的服務。免費版(Community)適用於個人開發者和小型團隊,提供基本開發工具;付費版(Professional和Enterprise)則提供高級功能,如高級調試和團隊協作工具,適合大型項目和企業級開發。

Visual Studio社區版:解釋的免費選項Visual Studio社區版:解釋的免費選項Apr 21, 2025 am 12:09 AM

VisualStudioCommunityEdition是一款免費的IDE,適合個人開發者、小型團隊和教育機構。 1)它提供代碼編輯、調試、測試和版本控制等功能。 2)基於Roslyn編譯器平台,支持多種編程語言並集成Git和TFVC。 3)高級功能包括單元測試,優化建議包括關閉不必要的擴展和使用輕量級編輯器。

視覺工作室:輕鬆構建應用程序視覺工作室:輕鬆構建應用程序Apr 20, 2025 am 12:09 AM

VisualStudio是由微軟開發的集成開發環境(IDE),支持多種編程語言,包括C#,C ,Python等。 1.它提供了智能感知(IntelliSense)功能,幫助快速編寫代碼。 2.調試器允許設置斷點,逐步執行代碼,找出問題。 3.對於初學者,創建簡單的控制台應用程序是入門的好方法。 4.高級用法包括項目管理和依賴注入等設計模式的應用。 5.常見錯誤可以通過調試工具逐步解決。 6.性能優化和最佳實踐包括代碼優化、版本控制、代碼質量檢查和自動化測試。

Visual Studio和VS代碼:了解其關鍵差異Visual Studio和VS代碼:了解其關鍵差異Apr 19, 2025 am 12:16 AM

VisualStudio適合大型項目和企業級應用開發,VSCode則適合快速開發和多語言支持。 1.VisualStudio提供全面的IDE環境,支持微軟技術棧。 2.VSCode是輕量級編輯器,強調靈活性和擴展性,跨平台支持。

視覺工作室仍然免費嗎?了解可用性視覺工作室仍然免費嗎?了解可用性Apr 18, 2025 am 12:05 AM

是的,VisualStudio某些版本是免費的。具體來說,VisualStudioCommunityEdition對個人開發者、開源項目、學術研究和小型組織免費。然而,也有付費版本如VisualStudioProfessional和Enterprise,適用於大型團隊和企業,提供額外功能。

使用Visual Studio:跨平台開發軟件使用Visual Studio:跨平台開發軟件Apr 17, 2025 am 12:13 AM

使用VisualStudio進行跨平台開發是可行的,通過支持.NETCore和Xamarin等框架,開發者可以編寫一次代碼並在多個操作系統上運行。 1)創建.NETCore項目並使用其跨平台能力,2)使用Xamarin進行移動應用開發,3)利用異步編程和代碼重用來優化性能,確保應用的高效運行和可維護性。

vscode如何格式化jsonvscode如何格式化jsonApr 16, 2025 am 07:54 AM

在 VS Code 中格式化 JSON 的方法有:1. 使用快捷鍵 (Windows/Linux:Ctrl Shift I;macOS:Cmd Shift I);2. 通過菜單(“編輯” > “格式化文檔”);3. 安裝 JSON 格式化程序擴展(如 Prettier);4. 手動格式化(使用快捷鍵縮進/縮出塊或添加花括號和分號);5. 使用外部工具(如 JSONLint 和 JSON Formatter)。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),