編集履歴を Git にエクスポート
VMark はドキュメントごとに編集履歴を残します。保存のたびに、また AI クライアントが MCP 経由で行う編集のたびに、誰が行ったかとともに記録されます。ファイル → ドキュメント履歴 → 編集履歴を Git にエクスポート… は、この履歴を Git リポジトリにコピーします。git log で閲覧したり、差分を見たり、プロジェクトと一緒に保管したりできます。
エクスポートの手順
- 履歴を書き出したいドキュメントを開きます。
- ファイル → ドキュメント履歴 → 編集履歴を Git にエクスポート… を選びます(コマンドパレットから 編集履歴を Git にエクスポート を実行しても構いません)。
- Git リポジトリ内のフォルダを選びます。選択ダイアログはドキュメントのあるフォルダで開きます。
VMark は追加したコミット数、またはブランチがすでに最新だったことを知らせます。
ブランチの中身
履歴は専用のブランチ vmark-journal/<document-uuid> に書き出されます。VMark は作業ツリー、インデックス、HEAD、その他のブランチには一切触れず、ブランチの切り替えもしません。ブランチにはドキュメント名のファイルが 1 つだけ入ります。
- リビジョンごとに 1 コミット。 作成者は編集を行った人(あなた、または AI クライアント)で、日時は編集した時刻です。
- 整理された履歴の区間ごとに 1 つのまとめコミット。 VMark は履歴を小さく保つために古いリビジョンを整理します。整理されたリビジョンの連続は Collected history という 1 つのコミットになり、その区間で編集したすべての人を列挙します。
各コミットメッセージの末尾には、VMark と結びつけるトレーラーが付きます。
| トレーラー | 意味 |
|---|---|
VMark-Document | ドキュメントの識別子。すべてのコミットで同じです |
VMark-Revision | このコミットが記録するリビジョン |
VMark-Parent | 1 つ前のリビジョン |
VMark-Actor | 編集を行った人 |
VMark-Kind | 記録のされ方:controlled(VMark 経由の AI 編集)、observed(保存)、gap(VMark の外で行われた変更)など |
VMark-Tool | AI 編集に使われた MCP ツール |
VMark-Session、VMark-Client | AI クライアントのセッションラベルと名前(提供された場合) |
VMark-Collected | まとめコミットで、対象となる整理済みリビジョンの範囲 |
VMark-Actors | まとめコミットで、その範囲で編集したすべての人(並べ替え済み) |
再エクスポート
何度でもエクスポートできます。2 回目以降は前回以降のリビジョンだけを追加し、新しいものがなければ何も変えません。同じ履歴からは常に同じコミットが作られます。
ブランチが VMark の残した状態でなくなっている場合、VMark は上書きせずにエクスポートを拒否します。
- 前回のエクスポート以降にブランチが変更された(誰かがコミットした、巻き戻した、書き換えた)。ブランチを移動または削除してから、もう一度エクスポートしてください。
- 同じ名前のブランチが存在するが、このドキュメントの VMark エクスポートではない。
- ブランチがチェックアウトされている(ワークツリーで)。
要件と制限
- Git がインストールされている必要があります。VMark はログインシェルの
PATHから Git を探し、見つからない場合はその旨を表示します。 - エクスポートされるのは保存済みの履歴だけです。まだ保存していない編集は含まれません。
- VMark は Git の低レベルコマンドでコミットを作るため、コミットフックは実行されません。ブランチの更新を監視するフックは実行されます。
- 大きな履歴には時間がかかります。コミット 1 つにつき Git のプロセスがいくつか動きます。
- シャロークローン(shallow clone)では、VMark はこのコンピューターから自分でエクスポートしたブランチだけを続けます。
- エクスポート中はエクスポート先のブランチをチェックアウトしないでください。最後のワークツリー確認の後にチェックアウトすると、そのワークツリーのインデックスとファイルが、移動したブランチと食い違ったままになることがあります。