VSCode にファイルのローカル履歴を保持する機能が追加されました。この記事では VSCode における履歴保存戦略について説明します。皆様のお役に立てれば幸いです。
昨日 VSCode をアップデートしたところ、ファイルのローカル履歴を保持する機能も追加されていることが分かりました。少し前に、Yank Note に履歴記録機能を追加するために、長い間頭を悩ませて履歴保存戦略を構想したことを思い出します。 VSCode が数か月早くリリースされていたら、リファレンスがあったのにと嘆いています。 [推奨される学習: 「vscode 入門チュートリアル 」]
しかし、VSCode の歴史的なストレージ戦略を調べてみると、それほど大雑把ではないでしょうか。
VSCode 1.66 バージョンのタイムラインにファイルのローカル履歴を表示できるようになりました。効果はこんな感じです
この関数に関して、VSCode はいくつかの構成も追加しました:
ローカル履歴を操作するための新しい設定もあります:
ワークベンチ.localHistory.enabled
- ローカル履歴を有効または無効にします (デフォルト:true
).workbench.localHistory.maxFileSize
- ローカル履歴作成時のファイル サイズ制限履歴エントリ (デフォルト:256 KB
).workbench.localHistory.maxFileEntries
- ファイルごとのローカル履歴エントリの制限 (デフォルト:50
) .workbench.localHistory.exclude
- ローカル履歴から特定のファイルを除外するためのグロブ パターン。workbench.localHistory.mergeWindow
- 秒単位の間隔この間、ローカル ファイル履歴の最後のエントリ (デフォルト10s
) にさらに変更が追加されます。
履歴エントリを右クリックすると、メニューが表示されます。システム マネージャに直接ファイル 履歴記録のコピー。
VSCode は、保存/元に戻す操作ごとに、特定の時間枠 (デフォルトは 10 秒) 内にファイルをフォルダーに保存すると推測できます。履歴レコードは、特別なファイル名 (保存時間情報) によって検索されます。
これは失礼すぎます。ファイルは単なるバージョンです。
それでは、当時検討されていたTyporaの戦略についてお話しましょう。 Typora は、macOS 上で非常に精巧なファイル履歴バックトラッキング インターフェイスを備えています。
システムの「タイム マシン」を使用してバージョン バックトラッキングを実装する必要があるようです。したがって、この機能は Windows では利用できなくなりました。
私が思い描く歴史的バージョンにはいくつかの目標があります:
最も重要な目標は、データの損失を避けます。
履歴レコードはあまり多くのスペースを占有せず、段階的に記録することが最善です。
極端な場合には、ユーザーがデータを復元できるようにする必要があります。
履歴レコードにはマークを付けてメモを作成できる必要があります
最初の目標として、ユーザーが最後に編集したバージョンを保持したいと考えています。捨てないでください。また、Yank Note には自動保存機能があるため、スペースを取りすぎない、ファイルが生成されすぎないという 2 番目の目標があります。したがって、私が最初に考えた、VSCode と同様の時間枠ファイル保存戦略は機能しません。
3 番目の目標については、Git やデータベースなどのカスタム形式を導入したくありません。ユーザーがデータを失い、ソフトウェア内の履歴レコードを見つけるのが不便な場合(ソフトウェアが破損した、ファイルが誤って削除されたなど)、ユーザーは履歴ディレクトリに入ってファイルを取得できなければなりません。
フォローアップ: ユーザーが誤ってドキュメントを削除し、ごみ箱でドキュメントが見つからなかったため、この方法でドキュメントを復元しました。
4 番目の目標を考慮して、最終的にファイルの履歴バージョンを保存するために zip ファイルを使用することにしました。ただし、履歴の書き込みと読み取りで多少のコンピューティング パフォーマンスが消費されます (サイズは 10 メガバイトを超えます)。ファイル履歴は基本的に認識できませんが、最終的な効果は依然として非常に良好です。
最終解決策:
各ドキュメントはファイル名とパスでハッシュ化され、zip パッケージ ファイル名がスペルアウトされます
毎回ファイルを書き込み、新しいバージョンのファイルを zip ファイルに書き込みます
ファイルの移動と名前変更時に同時に zip ファイルの名前を変更します
履歴バージョンの最大数は制限される場合があります。
バージョンメモとタグ情報は、圧縮メモフィールドに保存できます。
通常、ファイルを編集する場合、自動保存メカニズムにより、現在のバージョンと前のバージョンの差は非常に小さいため、理論的には、新しいバージョンのファイルが圧縮ファイルに追加されます。 、圧縮による全体的なファイル サイズの増加は非常に小さいはずです。しかし、後になってこれはそうではないことがわかり、そのとき初めて、各ファイルが個別に圧縮されてからまとめてパッケージ化されるという、Zip ファイル圧縮の特徴に気づきました。つまり、圧縮パッケージにファイルを追加する場合、他のファイルと一緒に圧縮されることはありません。
この状況に対応して、私は 2 回の圧縮戦略を採用しました。1 回目は圧縮率を 0 に設定し、パッケージ化のみを行い、zip パッケージにファイルの元の情報が含まれるようにしました。パッケージ化されたファイル全体が 1 回圧縮され、2 回目に圧縮されるため、圧縮プログラムは全体的な情報を考慮して圧縮できるようになり、「増分更新」の目的が達成されます。
後でテストするためのスクリプトを作成します。通常の長さのファイルは、1000 バージョンを保存した場合でも 50 KB しか占有しません。
数か月間使用した後、履歴ファイル ディレクトリは 700 KB 以上のスペースしか占有せず、その中のほとんどの履歴ファイルのサイズはわずか数 KB です。 VSCode を振り返ると、過去 2 日間で履歴ディレクトリが 2M を占めていました。
歴史的な保存について、いくつかの保存戦略をさらに検討しました
比較的最後に保存した時点で、次の情報を保持します。
- 過去 10 分間のすべてのバージョン
- 過去 1 時間の 1 分ごとに 1 つのバージョン
- 過去 1 時間ごと24 時間 1 つのバージョン
- 毎日 1 つのバージョンを保持
- マークされたバックアップ
しかし、今は必要ないようです。現在の戦略はシンプルです。 、それぞれ 私の期待にも応えました。
VSCode の詳細については、vscode チュートリアル をご覧ください。 !
以上がVSCode の履歴ストレージ戦略について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。