Got object sending working in direct mode. However, I don't yet have a
reliable way to deal with files being modified while they're being
transferred. I have code that detects it on the sending side, but the
receiver is still free to move the wrong content into its annex, and record
that it has the content. So that's not acceptable, and I'll need to work
on it some more. However, at this point I can use a direct mode repository
as a remote and transfer files from and to it.

----

Automated updating of the cached mtime, etc data. Next I need to automate
generation of the key to filename mapping files. I'm thinking that I'll make
`git annex sync` do it. Then, once I get committing and 
merging working in direct mode repositories (which is likely to be a
good week's worth of work), the workflow for using these repositories
will be something like this:

	git config annex.direct true
	git annex sync # pulls any changes, merges, updates maps and caches
	git annex get
	# modify files
	git annex sync # commits and pushes changes

And once I get direct mode repositories working to this degree at the
command line, I can get on with adding support to the assistant.

----

Also did some more work today on the OSX app. Am in the middle of getting
it to modify the binaries in the app to change the paths to the libraries they
depend on. This will avoid the hacky environment variable it is currently
using, and make runshell a much more usable environment. It's the right way
to do it. (I can't believe I just said RPATH was the right way to do
anything.)

In the middle of this, I discovered
<http://hackage.haskell.org/package/cabal-macosx>, which does the same
type of thing.

Anyway, I have to do some crazy hacks to work around short library name
fields in executables that I don't want to have to be specially rebuilt in
order to build the webapp. Like git.
