Built git annex direct
and git annex indirect
to toggle back and forth
between direct mode. Made git annex status
show if the repository is in
direct mode. Now only merging is needed for direct mode to be basically
usable.
I can do a little demo now. Pay attention to the "@" ls shows at the end of symlinks.
joey@gnu:~/tmp/bench/rdirect>ls
myfile@ otherfile@
joey@gnu:~/tmp/bench/rdirect>git annex find
otherfile
# So, two files, only one present in this repo.
joey@gnu:~/tmp/bench/rdirect>git annex direct
commit
# On branch master
# Your branch is ahead of 'origin/master' by 7 commits.
#
nothing to commit (working directory clean)
ok
direct myfile ok
direct otherfile ok
direct ok
joey@gnu:~/tmp/bench/rdirect>ls
myfile@ otherfile
# myfile is still a broken symlink because we don't have its content
joey@gnu:~/tmp/bench/rdirect>git annex get myfile
get myfile (from origin...) ok
(Recording state in git...)
joey@gnu:~/tmp/bench/rdirect>ls
myfile otherfile
joey@gnu:~/tmp/bench/rdirect>echo "look mom, no symlinks" >> myfile
joey@gnu:~/tmp/bench/rdirect>git annex sync
add myfile (checksum...) ok
commit
(Recording state in git...)
[master 0e8de9b] git-annex automatic sync
...
ok
joey@gnu:~/tmp/bench/rdirect>git annex indirect
commit ok
indirect myfile ok
indirect otherfile ok
indirect ok
joey@gnu:~/tmp/bench/rdirect>ls
myfile@ otherfile@
I'd like git annex direct
to set the repository to untrusted, but
I didn't do it. Partly because having git annex indirect
set it back to
semitrusted seems possibly wrong -- the user might not trust a repo even in
indirect mode. Or might fully trust it. The docs will encourage users to
set direct mode repos to untrusted -- in direct mode you're operating
without large swathes of git-annex's carefully constructed safety net.
(When the assistant later uses direct mode, it'll untrust the repository
automatically.)