這篇文章主要介紹“VSCode中的歷史儲(chǔ)存策略是什么”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“VSCode中的歷史儲(chǔ)存策略是什么”文章能幫助大家解決問題。
為龍泉等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及龍泉網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、龍泉網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
VSCode 1.66 版本的時(shí)間軸中可以展示文件本地歷史了,效果是這樣
針對(duì)這個(gè)功能,VSCode 也增加了一些配置:
There are also new settings to work with local history:
workbench.localHistory.enabled
- Enable or 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
- Interval in seconds during which further changes are added to the last entry in local file history (default10s
).
右鍵點(diǎn)擊歷史條目,有菜單可以直接在系統(tǒng)管理器中找到文件某個(gè)歷史記錄的副本。
因此可以推斷出,VSCode 為每一個(gè)保存/撤銷等操作,在一定時(shí)間窗口(默認(rèn)10s)內(nèi),保存一個(gè)文件到文件夾。通過特殊的文件命名(保留時(shí)間信息)來定位歷史記錄。
這也太粗暴了,一個(gè)文件就是一個(gè)版本唄。
然后說下當(dāng)時(shí)調(diào)研的 Typora 的策略。Typora 在 macOS 上有非常精美的文件歷史回溯界面
看樣子它應(yīng)該是用的系統(tǒng)的“時(shí)間機(jī)器”來實(shí)現(xiàn)版本回溯的。所以這個(gè)功能在 Windows 上也就沒有了。
我設(shè)想中的歷史版本,有幾個(gè)目標(biāo):
最重要的目標(biāo)是盡量避免數(shù)據(jù)丟失。
歷史記錄不要占用太多體積,最好能增量記錄。
極端情況下要方便用戶還原數(shù)據(jù)。
歷史記錄應(yīng)該可以標(biāo)記和備注
針對(duì)第一個(gè)目標(biāo),我希望能保留用戶最近的編輯版本,不要舍棄。而 Yank Note 有自動(dòng)保存功能,也就有了第二個(gè)目標(biāo),不要占用太多空間,也不要生成太多文件。所以最開始想的類似 VSCode 那種,時(shí)間窗口+文件保存的策略,就不行了。
針對(duì)第三個(gè)目標(biāo),我不想引入自定義的格式,如 Git,或者數(shù)據(jù)庫。因?yàn)槿绻脩魜G失了數(shù)據(jù),在軟件也不方便找到歷史記錄的情況(軟件損壞,文件誤刪等),用戶要可以進(jìn)入歷史目錄,把文件找回來。
后續(xù):有個(gè)用戶誤刪了一個(gè)文檔,回收站也找不到了,就通過這種方法恢復(fù)的。
再考慮第四個(gè)目標(biāo),最終我選擇了使用 zip 文件的方式來保存文件歷史版本,雖然在寫入和讀取歷史上會(huì)消耗一點(diǎn)計(jì)算性能(10多兆大文件歷史記錄也基本沒感知),但最終效果還是很好的。
最終方案:
每個(gè)文檔由文件名和路徑 Hash 拼出一個(gè) zip 包文件名
每次寫入文件,同時(shí)往這個(gè) zip 文件中寫入一個(gè)新版本文件
移動(dòng)和重命名文件時(shí)候同步更改 zip 文件的名字
最大歷史版本數(shù)可以做一個(gè)限制。
版本備注和標(biāo)記信息可以存在壓縮的備注字段中。
通常編輯一個(gè)文件的時(shí)候,由于自動(dòng)保存的機(jī)制,當(dāng)前版本和上一個(gè)版本之間的差異很小,因此理論上往壓縮文件中添加一個(gè)新的版本文件,壓縮文件整體大小增加應(yīng)該很小才對(duì)。不過后來發(fā)現(xiàn)并非如此,這時(shí)我才意識(shí)到 Zip 文件壓縮的特性:每個(gè)文件分別壓縮,再合起來打包。也即是說往壓縮包新增文件的時(shí)候,并不會(huì)和其他文件一起壓縮。
針對(duì)這種情況,我采取兩次壓縮的策略:第一次把壓縮率設(shè)置為 0,僅僅打包,這樣 zip 包內(nèi)都是文件的原始信息。第二次將整個(gè)打包文件壓縮一次,這下壓縮程序就可以考慮整體的信息來做壓縮了,這就實(shí)現(xiàn)了“增量更新”的目的。
后面編寫腳本測(cè)試,一個(gè)普通長(zhǎng)度的文件,保存 1000 個(gè)版本,也才占用 50KB。
使用了幾個(gè)月下來,我的歷史文件目錄也才占用 700 多 KB 的空間,里面大部分歷史記錄文件只有幾 KB 大小。反觀 VSCode,使用這兩天歷史目錄就占用了 2M。
關(guān)于“VSCode中的歷史儲(chǔ)存策略是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
當(dāng)前名稱:VSCode中的歷史儲(chǔ)存策略是什么
網(wǎng)頁路徑:http://www.chinadenli.net/article6/pgeeig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、小程序開發(fā)、服務(wù)器托管、網(wǎng)站維護(hù)、搜索引擎優(yōu)化、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)