From a714cd09db2d98a01ce70080446adcb7c8afaa21 Mon Sep 17 00:00:00 2001 From: Josh Hansen Date: Mon, 2 Oct 2023 00:32:04 -0700 Subject: [PATCH] Update HISTORY for 0.6 --- HISTORY.md | 34 ++++++++++++++++++++++++++++++++++ ROADMAP.md | 18 ------------------ 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index c3698cb..6bdcd2a 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -66,3 +66,37 @@ Adds the ability to insert from JSON on `init`. Fixes a bug when indices were chained together but not reflected in all related indices' table info. -[x] `idx`: ensure that indices beyond the second result in all related indices being declared as related + +## 0.6.0 - 2 Oct 2023 + +Introduces tools for snapshotting and rolling back the state of Ghee tables, built using Btrfs subvolume snapshots. + +The `commit` command makes a snapshot of the current state; `log` lists past changes; `restore` returns files to their +`HEAD` state; and `reset` returns all files to their state in a specified commit. + +As in Git, a reference to a `HEAD` commit is maintained, but Ghee stores it in the extended attribute `user.ghee.v0.HEAD`. + +(Versioning of the `user.ghee` xattr namespace is also accomplished in this release.) + +A `touch` command is introduced to allow easy creation of files, whose xattrs will be inferred from their position within the +table / index directory structure. + +Snapshot testing has been greatly strengthened, testing against ext4 and btrfs filesystems as well as relative and absolute paths. + +-[x] ~~`init`~~: `create`: create as a Btrfs subvolume when possible +-[x] `ghee commit ./people -m "message!"`: commit the `./people` table in its current form with message "message!" +-[x] `ghee log ./people`: show commit messages for all commits in the `./people` table. +-[x] `commit`: inherit snapshot dir ownership from parent +-[x] `commit`: unit test; implemented, but disabled as it requires superuser +-[x] `ghee status ./people`: show how the ./people table has changed since last commit; using CoW snapshots +-[x] `ghee reset ./people gf037d2c98`: replace the current contents of the `./people` table to its state in commit gf037d2c98 +-[x] `ghee restore ./people`: replace all changed files in `./people` with their versions in the most recent commit +-[x] Test `get` on non-table? Whatever that bug is... +-[x] Ensure all commands accept relative paths +-[-] Maybe store table index paths as relative paths? (Then we can operate on snapshots directly.) + Rejected in favor of storing absolute paths, which we then relativize +-[x] Cover absolute paths in example.sh +-[x] Version user.ghee namespace +-[x] Rename most-recent-snapshot -> HEAD +-[x] Update README.md for 0.6 + diff --git a/ROADMAP.md b/ROADMAP.md index 057f328..1474fba 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,23 +1,5 @@ # Ghee Roadmap -## 0.6 --[x] ~~`init`~~: `create`: create as a Btrfs subvolume when possible --[x] `ghee commit ./people -m "message!"`: commit the `./people` table in its current form with message "message!" --[x] `ghee log ./people`: show commit messages for all commits in the `./people` table. --[x] `commit`: inherit snapshot dir ownership from parent --[x] `commit`: unit test; implemented, but disabled as it requires superuser --[x] `ghee status ./people`: show how the ./people table has changed since last commit; using CoW snapshots --[x] `ghee reset ./people gf037d2c98`: replace the current contents of the `./people` table to its state in commit gf037d2c98 --[x] `ghee restore ./people`: replace all changed files in `./people` with their versions in the most recent commit --[x] Test `get` on non-table? Whatever that bug is... --[x] Ensure all commands accept relative paths --[-] Maybe store table index paths as relative paths? (Then we can operate on snapshots directly.) - Rejected in favor of storing absolute paths, which we then relativize --[x] Cover absolute paths in example.sh --[x] Version user.ghee namespace --[x] Rename most-recent-snapshot -> HEAD --[x] Update README.md for 0.6 - ## 0.7 -[ ] `ghee branch`: branch management -[ ] `ghee switch`: HEAD management