578 lines
27 KiB
Text
578 lines
27 KiB
Text
+ 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 ..
|