+ declare -A PREFIXES + PREFIXES=([relative]="." [absolute]="$EXAMPLE_PATH/FSNAME") + mkdir ./ext4 + mkdir ./btrfs + mkdir ./empty + for i in "${!PREFIXES[@]}" + Make sure we are in the base path so the relative prefix resolves properly + cd /home/josh/Projects/Ghee/snapshot + prefix=. + '======= relative prefix: . =======' + ext4img=ghee-ext4-relative.img + dd if=/dev/zero of=ghee-ext4-relative.img bs=1M count=400 + mkfs.ext4 -L ext4-relative ghee-ext4-relative.img + sudo mount -o loop ghee-ext4-relative.img ext4 + sudo chown josh:josh ext4 + fsprefix=. + cd ext4 + main . + mkdir ./people + touch ./people/Sandeep ./people/Sofia ./people/Wulfrum + /home/josh/Projects/Ghee/target/debug/ghee set -s name=Sandeep -s id=2 -s state=CA ./people/Sandeep + /home/josh/Projects/Ghee/target/debug/ghee set -s name=Sofia -s id=1 -s state=WA ./people/Sofia + /home/josh/Projects/Ghee/target/debug/ghee set -s name=Wulfrum -s id=0 -s state=CA ./people/Wulfrum + Check how Ghee sees the files we just set up + /home/josh/Projects/Ghee/target/debug/ghee get ./people ./people/Sandeep user.id 2 ./people/Sandeep user.name Sandeep ./people/Sandeep user.state CA ./people/Sofia user.id 1 ./people/Sofia user.name Sofia ./people/Sofia user.state WA ./people/Wulfrum user.id 0 ./people/Wulfrum user.name Wulfrum ./people/Wulfrum user.state CA + Tell Ghee what key the data is indexed by + /home/josh/Projects/Ghee/target/debug/ghee init -k name ./people + Index the dataset by ID + /home/josh/Projects/Ghee/target/debug/ghee idx -v -k id ./people ./people:id ./people/Sofia -> ./people:id/1 ./people/Wulfrum -> ./people:id/0 ./people/Sandeep -> ./people:id/2 + /home/josh/Projects/Ghee/target/debug/ghee idx -v -k state -k id ./people ./people/Sofia -> ./people/:state:id/WA/1 ./people/Wulfrum -> ./people/:state:id/CA/0 ./people/Sandeep -> ./people/:state:id/CA/2 + /home/josh/Projects/Ghee/target/debug/ghee ins -v ./people Initialized ./people/Janella Linked ./people:id/3 -> ./people/Janella Linked ./people/:state:id/FL/3 -> ./people/Janella Initialized ./people/Lilly Linked ./people:id/4 -> ./people/Lilly Linked ./people/:state:id/NM/4 -> ./people/Lilly Initialized ./people/Darrel Linked ./people:id/5 -> ./people/Darrel Linked ./people/:state:id/MI/5 -> ./people/Darrel + /home/josh/Projects/Ghee/target/debug/ghee get -a ./people user.ghee.tableinfo {"key":"name","indices_abs":{"id":"/home/josh/Projects/Ghee/snapshot/ext4/people:id","name":"/home/josh/Projects/Ghee/snapshot/ext4/people","state,id":"/home/josh/Projects/Ghee/snapshot/ext4/people/:state:id"}} ./people/Darrel user.id 5 ./people/Darrel user.name Darrel ./people/Darrel user.state MI ./people/Janella user.id 3 ./people/Janella user.name Janella ./people/Janella user.state FL ./people/Lilly user.id 4 ./people/Lilly user.name Lilly ./people/Lilly user.state NM ./people/Sandeep user.id 2 ./people/Sandeep user.name Sandeep ./people/Sandeep user.state CA ./people/Sofia user.id 1 ./people/Sofia user.name Sofia ./people/Sofia user.state WA ./people/Wulfrum user.id 0 ./people/Wulfrum user.name Wulfrum ./people/Wulfrum user.state CA + /home/josh/Projects/Ghee/target/debug/ghee get -a -w state=CA -f name ./people ./people/Wulfrum user.name Wulfrum ./people/Sandeep user.name Sandeep + /home/josh/Projects/Ghee/target/debug/ghee del -v ./people -w name=Sofia Removed ./people:id/1 Removed ./people/Sofia Removed ./people/:state:id/WA/1 + /home/josh/Projects/Ghee/target/debug/ghee del -v ./people:id 3 Removed ./people:id/3 Removed ./people/Janella Removed ./people/:state:id/FL/3 + /home/josh/Projects/Ghee/target/debug/ghee del -v ./people/:state:id CA 0 Removed ./people:id/0 Removed ./people/Wulfrum Removed ./people/:state:id/CA/0 + /home/josh/Projects/Ghee/target/debug/ghee get -a -w state=CA -f name ./people/:state:id ./people/:state:id/CA/2 user.name Sandeep + /home/josh/Projects/Ghee/target/debug/ghee create -v ./direct -k blah Initialized table ./direct with key: user.blah + /home/josh/Projects/Ghee/target/debug/ghee create -v ./people2 -k id Initialized table ./people2 with key: user.id Initialized ./people2/3 Initialized ./people2/4 Initialized ./people2/5 + /home/josh/Projects/Ghee/target/debug/ghee status ./people2 +./people2 +./people2/3 +./people2/4 +./people2/5 + mkdir ./empty + /home/josh/Projects/Ghee/target/debug/ghee status ./empty No table found + /home/josh/Projects/Ghee/target/debug/ghee get ./empty + /home/josh/Projects/Ghee/target/debug/ghee get -a ./empty + cd .. + sudo umount ext4 + btrfsimg=ghee-btrfs-relative.img + dd if=/dev/zero of=ghee-btrfs-relative.img bs=1M count=114 + mkfs.btrfs -L btrfs-relative --rootdir empty ghee-btrfs-relative.img + sudo mount -o loop ghee-btrfs-relative.img btrfs + sudo chown josh:josh btrfs + fsprefix=. + cd btrfs + main . + mkdir ./people + touch ./people/Sandeep ./people/Sofia ./people/Wulfrum + /home/josh/Projects/Ghee/target/debug/ghee set -s name=Sandeep -s id=2 -s state=CA ./people/Sandeep + /home/josh/Projects/Ghee/target/debug/ghee set -s name=Sofia -s id=1 -s state=WA ./people/Sofia + /home/josh/Projects/Ghee/target/debug/ghee set -s name=Wulfrum -s id=0 -s state=CA ./people/Wulfrum + Check how Ghee sees the files we just set up + /home/josh/Projects/Ghee/target/debug/ghee get ./people ./people/Sandeep user.id 2 ./people/Sandeep user.name Sandeep ./people/Sandeep user.state CA ./people/Sofia user.id 1 ./people/Sofia user.name Sofia ./people/Sofia user.state WA ./people/Wulfrum user.id 0 ./people/Wulfrum user.name Wulfrum ./people/Wulfrum user.state CA + Tell Ghee what key the data is indexed by + /home/josh/Projects/Ghee/target/debug/ghee init -k name ./people + Index the dataset by ID + /home/josh/Projects/Ghee/target/debug/ghee idx -v -k id ./people ./people:id ./people/Sandeep -> ./people:id/2 ./people/Sofia -> ./people:id/1 ./people/Wulfrum -> ./people:id/0 + /home/josh/Projects/Ghee/target/debug/ghee idx -v -k state -k id ./people ./people/Sandeep -> ./people/:state:id/CA/2 ./people/Sofia -> ./people/:state:id/WA/1 ./people/Wulfrum -> ./people/:state:id/CA/0 + /home/josh/Projects/Ghee/target/debug/ghee ins -v ./people Initialized ./people/Janella Linked ./people:id/3 -> ./people/Janella Linked ./people/:state:id/FL/3 -> ./people/Janella Initialized ./people/Lilly Linked ./people:id/4 -> ./people/Lilly Linked ./people/:state:id/NM/4 -> ./people/Lilly Initialized ./people/Darrel Linked ./people:id/5 -> ./people/Darrel Linked ./people/:state:id/MI/5 -> ./people/Darrel + /home/josh/Projects/Ghee/target/debug/ghee get -a ./people user.ghee.tableinfo {"key":"name","indices_abs":{"id":"/home/josh/Projects/Ghee/snapshot/btrfs/people:id","name":"/home/josh/Projects/Ghee/snapshot/btrfs/people","state,id":"/home/josh/Projects/Ghee/snapshot/btrfs/people/:state:id"}} ./people/Darrel user.id 5 ./people/Darrel user.name Darrel ./people/Darrel user.state MI ./people/Janella user.id 3 ./people/Janella user.name Janella ./people/Janella user.state FL ./people/Lilly user.id 4 ./people/Lilly user.name Lilly ./people/Lilly user.state NM ./people/Sandeep user.id 2 ./people/Sandeep user.name Sandeep ./people/Sandeep user.state CA ./people/Sofia user.id 1 ./people/Sofia user.name Sofia ./people/Sofia user.state WA ./people/Wulfrum user.id 0 ./people/Wulfrum user.name Wulfrum ./people/Wulfrum user.state CA + /home/josh/Projects/Ghee/target/debug/ghee get -a -w state=CA -f name ./people ./people/Wulfrum user.name Wulfrum ./people/Sandeep user.name Sandeep + /home/josh/Projects/Ghee/target/debug/ghee del -v ./people -w name=Sofia Removed ./people:id/1 Removed ./people/Sofia Removed ./people/:state:id/WA/1 + /home/josh/Projects/Ghee/target/debug/ghee del -v ./people:id 3 Removed ./people:id/3 Removed ./people/Janella Removed ./people/:state:id/FL/3 + /home/josh/Projects/Ghee/target/debug/ghee del -v ./people/:state:id CA 0 Removed ./people:id/0 Removed ./people/Wulfrum Removed ./people/:state:id/CA/0 + /home/josh/Projects/Ghee/target/debug/ghee get -a -w state=CA -f name ./people/:state:id ./people/:state:id/CA/2 user.name Sandeep + /home/josh/Projects/Ghee/target/debug/ghee create -v ./direct -k blah Initialized table ./direct with key: user.blah + /home/josh/Projects/Ghee/target/debug/ghee create -v ./people2 -k id Initialized table ./people2 with key: user.id Initialized ./people2/3 Initialized ./people2/4 Initialized ./people2/5 + /home/josh/Projects/Ghee/target/debug/ghee status ./people2 +./people2 +./people2/3 +./people2/4 +./people2/5 + mkdir ./empty + /home/josh/Projects/Ghee/target/debug/ghee status ./empty No table found + /home/josh/Projects/Ghee/target/debug/ghee get ./empty + /home/josh/Projects/Ghee/target/debug/ghee get -a ./empty + btrfs . + Sanity check status and log on an empty directory + /home/josh/Projects/Ghee/target/debug/ghee status . No table found + /home/josh/Projects/Ghee/target/debug/ghee log No table found; no log exists + Create a pizza table + /home/josh/Projects/Ghee/target/debug/ghee create -v -k toppings ./pizza Initialized table ./pizza with key: user.toppings + Make sure the status is empty + /home/josh/Projects/Ghee/target/debug/ghee status ./pizza +./pizza + Create a record representing an olive pizza + /home/josh/Projects/Ghee/target/debug/ghee touch ./pizza/olive + Check that the new record shows up the status + /home/josh/Projects/Ghee/target/debug/ghee status ./pizza +./pizza +./pizza/olive + Commit the change with a helpful comment ++ /home/josh/Projects/Ghee/target/debug/ghee commit -m 'Add olive pizza' ./pizza + commit1=cb4b5763-902e-ca4d-a600-d69a6719b044 + Make sure the new commit shows up in the log + /home/josh/Projects/Ghee/target/debug/ghee log ./pizza commit cb4b5763-902e-ca4d-a600-d69a6719b044 Add olive pizza + Check that the status is empty again, since there are no pending changes + /home/josh/Projects/Ghee/target/debug/ghee status ./pizza + Now create a pepperoni pizza + /home/josh/Projects/Ghee/target/debug/ghee touch ./pizza/pepperoni + Set text in the file itself, rather than just xattrs + echo 'Olives are good on pizza' + Also set its yumminess level to 5, as an extended attribute + /home/josh/Projects/Ghee/target/debug/ghee set -s yumminess=5 ./pizza/olive + Make sure this all shows up in the status + FIXME The xattr changes arent reflected + /home/josh/Projects/Ghee/target/debug/ghee status ./pizza m./pizza/olive +./pizza/pepperoni + Commit the new changes ++ /home/josh/Projects/Ghee/target/debug/ghee commit -m 'Add pepperoni; add details to olive' ./pizza + commit2=a58c5f48-8f17-ed4a-a10a-68ea074f39dc + Make sure status and log reflect this + /home/josh/Projects/Ghee/target/debug/ghee status ./pizza + /home/josh/Projects/Ghee/target/debug/ghee log ./pizza commit a58c5f48-8f17-ed4a-a10a-68ea074f39dc Add pepperoni; add details to olive commit cb4b5763-902e-ca4d-a600-d69a6719b044 Add olive pizza + Create a buffalo chicken pizza + /home/josh/Projects/Ghee/target/debug/ghee touch ./pizza/buffalo-chicken + pwd /home/josh/Projects/Ghee/snapshot/btrfs + pushd ./pizza ~/Projects/Ghee/snapshot/btrfs/pizza ~/Projects/Ghee/snapshot/btrfs + Check status, restore, and status again using the current directory form + /home/josh/Projects/Ghee/target/debug/ghee status +./buffalo-chicken + /home/josh/Projects/Ghee/target/debug/ghee restore . + /home/josh/Projects/Ghee/target/debug/ghee status + /home/josh/Projects/Ghee/target/debug/ghee ls :snapshots table olive record pepperoni record + /home/josh/Projects/Ghee/target/debug/ghee reset cb4b5763-902e-ca4d-a600-d69a6719b044 + /home/josh/Projects/Ghee/target/debug/ghee ls :snapshots table olive record + popd ~/Projects/Ghee/snapshot/btrfs + pwd /home/josh/Projects/Ghee/snapshot/btrfs + cd .. + pwd /home/josh/Projects/Ghee/snapshot + sudo umount btrfs + for i in "${!PREFIXES[@]}" + Make sure we are in the base path so the relative prefix resolves properly + cd /home/josh/Projects/Ghee/snapshot + prefix=/home/josh/Projects/Ghee/snapshot/FSNAME + '======= absolute prefix: /home/josh/Projects/Ghee/snapshot/FSNAME =======' + ext4img=ghee-ext4-absolute.img + dd if=/dev/zero of=ghee-ext4-absolute.img bs=1M count=400 + mkfs.ext4 -L ext4-absolute ghee-ext4-absolute.img + sudo mount -o loop ghee-ext4-absolute.img ext4 + sudo chown josh:josh ext4 + fsprefix=/home/josh/Projects/Ghee/snapshot/ext4 + cd ext4 + main /home/josh/Projects/Ghee/snapshot/ext4 + mkdir /home/josh/Projects/Ghee/snapshot/ext4/people + touch /home/josh/Projects/Ghee/snapshot/ext4/people/Sandeep /home/josh/Projects/Ghee/snapshot/ext4/people/Sofia /home/josh/Projects/Ghee/snapshot/ext4/people/Wulfrum + /home/josh/Projects/Ghee/target/debug/ghee set -s name=Sandeep -s id=2 -s state=CA /home/josh/Projects/Ghee/snapshot/ext4/people/Sandeep + /home/josh/Projects/Ghee/target/debug/ghee set -s name=Sofia -s id=1 -s state=WA /home/josh/Projects/Ghee/snapshot/ext4/people/Sofia + /home/josh/Projects/Ghee/target/debug/ghee set -s name=Wulfrum -s id=0 -s state=CA /home/josh/Projects/Ghee/snapshot/ext4/people/Wulfrum + Check how Ghee sees the files we just set up + /home/josh/Projects/Ghee/target/debug/ghee get /home/josh/Projects/Ghee/snapshot/ext4/people ./people/Sandeep user.id 2 ./people/Sandeep user.name Sandeep ./people/Sandeep user.state CA ./people/Sofia user.id 1 ./people/Sofia user.name Sofia ./people/Sofia user.state WA ./people/Wulfrum user.id 0 ./people/Wulfrum user.name Wulfrum ./people/Wulfrum user.state CA + Tell Ghee what key the data is indexed by + /home/josh/Projects/Ghee/target/debug/ghee init -k name /home/josh/Projects/Ghee/snapshot/ext4/people + Index the dataset by ID + /home/josh/Projects/Ghee/target/debug/ghee idx -v -k id /home/josh/Projects/Ghee/snapshot/ext4/people /home/josh/Projects/Ghee/snapshot/ext4/people:id /home/josh/Projects/Ghee/snapshot/ext4/people/Sofia -> /home/josh/Projects/Ghee/snapshot/ext4/people:id/1 /home/josh/Projects/Ghee/snapshot/ext4/people/Sandeep -> /home/josh/Projects/Ghee/snapshot/ext4/people:id/2 /home/josh/Projects/Ghee/snapshot/ext4/people/Wulfrum -> /home/josh/Projects/Ghee/snapshot/ext4/people:id/0 + /home/josh/Projects/Ghee/target/debug/ghee idx -v -k state -k id /home/josh/Projects/Ghee/snapshot/ext4/people /home/josh/Projects/Ghee/snapshot/ext4/people/Sofia -> /home/josh/Projects/Ghee/snapshot/ext4/people/:state:id/WA/1 /home/josh/Projects/Ghee/snapshot/ext4/people/Sandeep -> /home/josh/Projects/Ghee/snapshot/ext4/people/:state:id/CA/2 /home/josh/Projects/Ghee/snapshot/ext4/people/Wulfrum -> /home/josh/Projects/Ghee/snapshot/ext4/people/:state:id/CA/0 + /home/josh/Projects/Ghee/target/debug/ghee ins -v /home/josh/Projects/Ghee/snapshot/ext4/people Initialized ./people/Janella Linked ./people:id/3 -> ./people/Janella Linked ./people/:state:id/FL/3 -> ./people/Janella Initialized ./people/Lilly Linked ./people:id/4 -> ./people/Lilly Linked ./people/:state:id/NM/4 -> ./people/Lilly Initialized ./people/Darrel Linked ./people:id/5 -> ./people/Darrel Linked ./people/:state:id/MI/5 -> ./people/Darrel + /home/josh/Projects/Ghee/target/debug/ghee get -a /home/josh/Projects/Ghee/snapshot/ext4/people user.ghee.tableinfo {"key":"name","indices_abs":{"id":"/home/josh/Projects/Ghee/snapshot/ext4/people:id","name":"/home/josh/Projects/Ghee/snapshot/ext4/people","state,id":"/home/josh/Projects/Ghee/snapshot/ext4/people/:state:id"}} ./people/Darrel user.id 5 ./people/Darrel user.name Darrel ./people/Darrel user.state MI ./people/Janella user.id 3 ./people/Janella user.name Janella ./people/Janella user.state FL ./people/Lilly user.id 4 ./people/Lilly user.name Lilly ./people/Lilly user.state NM ./people/Sandeep user.id 2 ./people/Sandeep user.name Sandeep ./people/Sandeep user.state CA ./people/Sofia user.id 1 ./people/Sofia user.name Sofia ./people/Sofia user.state WA ./people/Wulfrum user.id 0 ./people/Wulfrum user.name Wulfrum ./people/Wulfrum user.state CA + /home/josh/Projects/Ghee/target/debug/ghee get -a -w state=CA -f name /home/josh/Projects/Ghee/snapshot/ext4/people ./people/Wulfrum user.name Wulfrum ./people/Sandeep user.name Sandeep + /home/josh/Projects/Ghee/target/debug/ghee del -v /home/josh/Projects/Ghee/snapshot/ext4/people -w name=Sofia Removed ./people:id/1 Removed ./people/Sofia Removed ./people/:state:id/WA/1 + /home/josh/Projects/Ghee/target/debug/ghee del -v /home/josh/Projects/Ghee/snapshot/ext4/people:id 3 Removed ./people:id/3 Removed ./people/Janella Removed ./people/:state:id/FL/3 + /home/josh/Projects/Ghee/target/debug/ghee del -v /home/josh/Projects/Ghee/snapshot/ext4/people/:state:id CA 0 Removed ./people:id/0 Removed ./people/Wulfrum Removed ./people/:state:id/CA/0 + /home/josh/Projects/Ghee/target/debug/ghee get -a -w state=CA -f name /home/josh/Projects/Ghee/snapshot/ext4/people/:state:id ./people/:state:id/CA/2 user.name Sandeep + /home/josh/Projects/Ghee/target/debug/ghee create -v /home/josh/Projects/Ghee/snapshot/ext4/direct -k blah Initialized table /home/josh/Projects/Ghee/snapshot/ext4/direct with key: user.blah + /home/josh/Projects/Ghee/target/debug/ghee create -v /home/josh/Projects/Ghee/snapshot/ext4/people2 -k id Initialized table /home/josh/Projects/Ghee/snapshot/ext4/people2 with key: user.id Initialized ./people2/3 Initialized ./people2/4 Initialized ./people2/5 + /home/josh/Projects/Ghee/target/debug/ghee status /home/josh/Projects/Ghee/snapshot/ext4/people2 +./people2 +./people2/3 +./people2/4 +./people2/5 + mkdir /home/josh/Projects/Ghee/snapshot/ext4/empty + /home/josh/Projects/Ghee/target/debug/ghee status /home/josh/Projects/Ghee/snapshot/ext4/empty No table found + /home/josh/Projects/Ghee/target/debug/ghee get /home/josh/Projects/Ghee/snapshot/ext4/empty + /home/josh/Projects/Ghee/target/debug/ghee get -a /home/josh/Projects/Ghee/snapshot/ext4/empty + cd .. + sudo umount ext4 + btrfsimg=ghee-btrfs-absolute.img + dd if=/dev/zero of=ghee-btrfs-absolute.img bs=1M count=114 + mkfs.btrfs -L btrfs-absolute --rootdir empty ghee-btrfs-absolute.img + sudo mount -o loop ghee-btrfs-absolute.img btrfs + sudo chown josh:josh btrfs + fsprefix=/home/josh/Projects/Ghee/snapshot/btrfs + cd btrfs + main /home/josh/Projects/Ghee/snapshot/btrfs + mkdir /home/josh/Projects/Ghee/snapshot/btrfs/people + touch /home/josh/Projects/Ghee/snapshot/btrfs/people/Sandeep /home/josh/Projects/Ghee/snapshot/btrfs/people/Sofia /home/josh/Projects/Ghee/snapshot/btrfs/people/Wulfrum + /home/josh/Projects/Ghee/target/debug/ghee set -s name=Sandeep -s id=2 -s state=CA /home/josh/Projects/Ghee/snapshot/btrfs/people/Sandeep + /home/josh/Projects/Ghee/target/debug/ghee set -s name=Sofia -s id=1 -s state=WA /home/josh/Projects/Ghee/snapshot/btrfs/people/Sofia + /home/josh/Projects/Ghee/target/debug/ghee set -s name=Wulfrum -s id=0 -s state=CA /home/josh/Projects/Ghee/snapshot/btrfs/people/Wulfrum + Check how Ghee sees the files we just set up + /home/josh/Projects/Ghee/target/debug/ghee get /home/josh/Projects/Ghee/snapshot/btrfs/people ./people/Sandeep user.id 2 ./people/Sandeep user.name Sandeep ./people/Sandeep user.state CA ./people/Sofia user.id 1 ./people/Sofia user.name Sofia ./people/Sofia user.state WA ./people/Wulfrum user.id 0 ./people/Wulfrum user.name Wulfrum ./people/Wulfrum user.state CA + Tell Ghee what key the data is indexed by + /home/josh/Projects/Ghee/target/debug/ghee init -k name /home/josh/Projects/Ghee/snapshot/btrfs/people + Index the dataset by ID + /home/josh/Projects/Ghee/target/debug/ghee idx -v -k id /home/josh/Projects/Ghee/snapshot/btrfs/people /home/josh/Projects/Ghee/snapshot/btrfs/people:id /home/josh/Projects/Ghee/snapshot/btrfs/people/Sandeep -> /home/josh/Projects/Ghee/snapshot/btrfs/people:id/2 /home/josh/Projects/Ghee/snapshot/btrfs/people/Sofia -> /home/josh/Projects/Ghee/snapshot/btrfs/people:id/1 /home/josh/Projects/Ghee/snapshot/btrfs/people/Wulfrum -> /home/josh/Projects/Ghee/snapshot/btrfs/people:id/0 + /home/josh/Projects/Ghee/target/debug/ghee idx -v -k state -k id /home/josh/Projects/Ghee/snapshot/btrfs/people /home/josh/Projects/Ghee/snapshot/btrfs/people/Sandeep -> /home/josh/Projects/Ghee/snapshot/btrfs/people/:state:id/CA/2 /home/josh/Projects/Ghee/snapshot/btrfs/people/Sofia -> /home/josh/Projects/Ghee/snapshot/btrfs/people/:state:id/WA/1 /home/josh/Projects/Ghee/snapshot/btrfs/people/Wulfrum -> /home/josh/Projects/Ghee/snapshot/btrfs/people/:state:id/CA/0 + /home/josh/Projects/Ghee/target/debug/ghee ins -v /home/josh/Projects/Ghee/snapshot/btrfs/people Initialized ./people/Janella Linked ./people:id/3 -> ./people/Janella Linked ./people/:state:id/FL/3 -> ./people/Janella Initialized ./people/Lilly Linked ./people:id/4 -> ./people/Lilly Linked ./people/:state:id/NM/4 -> ./people/Lilly Initialized ./people/Darrel Linked ./people:id/5 -> ./people/Darrel Linked ./people/:state:id/MI/5 -> ./people/Darrel + /home/josh/Projects/Ghee/target/debug/ghee get -a /home/josh/Projects/Ghee/snapshot/btrfs/people user.ghee.tableinfo {"key":"name","indices_abs":{"id":"/home/josh/Projects/Ghee/snapshot/btrfs/people:id","name":"/home/josh/Projects/Ghee/snapshot/btrfs/people","state,id":"/home/josh/Projects/Ghee/snapshot/btrfs/people/:state:id"}} ./people/Darrel user.id 5 ./people/Darrel user.name Darrel ./people/Darrel user.state MI ./people/Janella user.id 3 ./people/Janella user.name Janella ./people/Janella user.state FL ./people/Lilly user.id 4 ./people/Lilly user.name Lilly ./people/Lilly user.state NM ./people/Sandeep user.id 2 ./people/Sandeep user.name Sandeep ./people/Sandeep user.state CA ./people/Sofia user.id 1 ./people/Sofia user.name Sofia ./people/Sofia user.state WA ./people/Wulfrum user.id 0 ./people/Wulfrum user.name Wulfrum ./people/Wulfrum user.state CA + /home/josh/Projects/Ghee/target/debug/ghee get -a -w state=CA -f name /home/josh/Projects/Ghee/snapshot/btrfs/people ./people/Wulfrum user.name Wulfrum ./people/Sandeep user.name Sandeep + /home/josh/Projects/Ghee/target/debug/ghee del -v /home/josh/Projects/Ghee/snapshot/btrfs/people -w name=Sofia Removed ./people:id/1 Removed ./people/Sofia Removed ./people/:state:id/WA/1 + /home/josh/Projects/Ghee/target/debug/ghee del -v /home/josh/Projects/Ghee/snapshot/btrfs/people:id 3 Removed ./people:id/3 Removed ./people/Janella Removed ./people/:state:id/FL/3 + /home/josh/Projects/Ghee/target/debug/ghee del -v /home/josh/Projects/Ghee/snapshot/btrfs/people/:state:id CA 0 Removed ./people:id/0 Removed ./people/Wulfrum Removed ./people/:state:id/CA/0 + /home/josh/Projects/Ghee/target/debug/ghee get -a -w state=CA -f name /home/josh/Projects/Ghee/snapshot/btrfs/people/:state:id ./people/:state:id/CA/2 user.name Sandeep + /home/josh/Projects/Ghee/target/debug/ghee create -v /home/josh/Projects/Ghee/snapshot/btrfs/direct -k blah Initialized table /home/josh/Projects/Ghee/snapshot/btrfs/direct with key: user.blah + /home/josh/Projects/Ghee/target/debug/ghee create -v /home/josh/Projects/Ghee/snapshot/btrfs/people2 -k id Initialized table /home/josh/Projects/Ghee/snapshot/btrfs/people2 with key: user.id Initialized ./people2/3 Initialized ./people2/4 Initialized ./people2/5 + /home/josh/Projects/Ghee/target/debug/ghee status /home/josh/Projects/Ghee/snapshot/btrfs/people2 +./people2 +./people2/3 +./people2/4 +./people2/5 + mkdir /home/josh/Projects/Ghee/snapshot/btrfs/empty + /home/josh/Projects/Ghee/target/debug/ghee status /home/josh/Projects/Ghee/snapshot/btrfs/empty No table found + /home/josh/Projects/Ghee/target/debug/ghee get /home/josh/Projects/Ghee/snapshot/btrfs/empty + /home/josh/Projects/Ghee/target/debug/ghee get -a /home/josh/Projects/Ghee/snapshot/btrfs/empty + btrfs /home/josh/Projects/Ghee/snapshot/btrfs + Sanity check status and log on an empty directory + /home/josh/Projects/Ghee/target/debug/ghee status /home/josh/Projects/Ghee/snapshot/btrfs No table found + /home/josh/Projects/Ghee/target/debug/ghee log No table found; no log exists + Create a pizza table + /home/josh/Projects/Ghee/target/debug/ghee create -v -k toppings /home/josh/Projects/Ghee/snapshot/btrfs/pizza Initialized table /home/josh/Projects/Ghee/snapshot/btrfs/pizza with key: user.toppings + Make sure the status is empty + /home/josh/Projects/Ghee/target/debug/ghee status /home/josh/Projects/Ghee/snapshot/btrfs/pizza +./pizza + Create a record representing an olive pizza + /home/josh/Projects/Ghee/target/debug/ghee touch /home/josh/Projects/Ghee/snapshot/btrfs/pizza/olive + Check that the new record shows up the status + /home/josh/Projects/Ghee/target/debug/ghee status /home/josh/Projects/Ghee/snapshot/btrfs/pizza +./pizza +./pizza/olive + Commit the change with a helpful comment ++ /home/josh/Projects/Ghee/target/debug/ghee commit -m 'Add olive pizza' /home/josh/Projects/Ghee/snapshot/btrfs/pizza + commit1=26639c6a-e730-e94b-9438-099e8674068c + Make sure the new commit shows up in the log + /home/josh/Projects/Ghee/target/debug/ghee log /home/josh/Projects/Ghee/snapshot/btrfs/pizza commit 26639c6a-e730-e94b-9438-099e8674068c Add olive pizza + Check that the status is empty again, since there are no pending changes + /home/josh/Projects/Ghee/target/debug/ghee status /home/josh/Projects/Ghee/snapshot/btrfs/pizza + Now create a pepperoni pizza + /home/josh/Projects/Ghee/target/debug/ghee touch /home/josh/Projects/Ghee/snapshot/btrfs/pizza/pepperoni + Set text in the file itself, rather than just xattrs + echo 'Olives are good on pizza' + Also set its yumminess level to 5, as an extended attribute + /home/josh/Projects/Ghee/target/debug/ghee set -s yumminess=5 /home/josh/Projects/Ghee/snapshot/btrfs/pizza/olive + Make sure this all shows up in the status + FIXME The xattr changes arent reflected + /home/josh/Projects/Ghee/target/debug/ghee status /home/josh/Projects/Ghee/snapshot/btrfs/pizza m./pizza/olive +./pizza/pepperoni + Commit the new changes ++ /home/josh/Projects/Ghee/target/debug/ghee commit -m 'Add pepperoni; add details to olive' /home/josh/Projects/Ghee/snapshot/btrfs/pizza + commit2=dd1fdd4f-8731-3f4c-abca-aad2948645b8 + Make sure status and log reflect this + /home/josh/Projects/Ghee/target/debug/ghee status /home/josh/Projects/Ghee/snapshot/btrfs/pizza + /home/josh/Projects/Ghee/target/debug/ghee log /home/josh/Projects/Ghee/snapshot/btrfs/pizza commit dd1fdd4f-8731-3f4c-abca-aad2948645b8 Add pepperoni; add details to olive commit 26639c6a-e730-e94b-9438-099e8674068c Add olive pizza + Create a buffalo chicken pizza + /home/josh/Projects/Ghee/target/debug/ghee touch /home/josh/Projects/Ghee/snapshot/btrfs/pizza/buffalo-chicken + pwd /home/josh/Projects/Ghee/snapshot/btrfs + pushd /home/josh/Projects/Ghee/snapshot/btrfs/pizza ~/Projects/Ghee/snapshot/btrfs/pizza ~/Projects/Ghee/snapshot/btrfs + Check status, restore, and status again using the current directory form + /home/josh/Projects/Ghee/target/debug/ghee status +./buffalo-chicken + /home/josh/Projects/Ghee/target/debug/ghee restore . + /home/josh/Projects/Ghee/target/debug/ghee status + /home/josh/Projects/Ghee/target/debug/ghee ls :snapshots table olive record pepperoni record + /home/josh/Projects/Ghee/target/debug/ghee reset 26639c6a-e730-e94b-9438-099e8674068c + /home/josh/Projects/Ghee/target/debug/ghee ls :snapshots table olive record + popd ~/Projects/Ghee/snapshot/btrfs + pwd /home/josh/Projects/Ghee/snapshot/btrfs + cd .. + pwd /home/josh/Projects/Ghee/snapshot + sudo umount btrfs + cd ..