4.6 KiB
Ghee History
Ghee's development began as an adjunct to the the Audiotater audio annotation tool, but soon developed a life of its own.
0.1.0 - 2 Aug 2023 (as "Hatter")
Initial release including commands to manipulate individual records: cp
, mv
, rm
, get
, set
.
0.2.0 (as "Mattress")
First command that operates on records as a group ("table"): idx
.
Also generates shell completions for Bash, Fish, PowerShell, Elvish, and anything else that clap_complete
supports.
Rename from Hatter to Mattress.
0.2.1 (as "Mattress")
Implement setting of user.mattress.keyname
0.3.0 - 10 Aug 2023
- Make
get
recursive by default - SQL WHERE-style select clauses using
-w --where
- Rename from Mattress to Ghee. Third time's the charm, right?
0.4.0 - 30 Aug 2023
Introduces the REPL and subcommands init
, ins
, del
, and ls
.
Both get
and del
now use the best available index to minimize traversals.
-[x] REPL
-[x] ins
for adding to table while maintaining related indexes
-[x] ins
from JSON
-[x] del
for removing from table while maintaining related indexes
-[x] ls
to show Ghee's view of the world
-[x] init
to initialize a directory as a full-fledged Ghee table (with specified key names)
-[x] Sensible default destination for idx
-[x] Make get
stop listing nested indices
-[x] Make get
accelerate traversal using the best available index (a la del
)
-[x] Make get
return paths from original index rather than the one used to accelerate
-[x] Fix output order, making commands reproducible
0.5.0 - 19 Sep 2023
Maintains soundness of indices when rm
ing, set
ing, cp
ing, and mv
ing.
Makes rm
and set
recursive, with optional opt-out.
Unit tests all commands.
Introduces create
; like init
but creates the directory for you.
Adds the ability to insert from JSON on init
.
-[x] init
: allow ins
-like insertion from JSON
-[x] create
to create directory and then init
-[x] Test predicates using default key names, e.g. key0<10
-[x] rm
: recursive by default
-[x] rm
: when removing indexed xattrs, update the relevant indices
-[x] set
: recursive by default
-[x] set
: when setting indexed xattrs, update the relevant indices
-[x] Test cp_or_mv
-[x] Test ls
0.5.1
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
0.6.1 - 2 Oct 2023
Points the btrfsutil
dependency at a published crate version rather than Git repository.