Currently annex.thin needs hard link support to be efficient;
it hard links the content from .git/annex/objects into the work tree.
When hard links are not supported, two copies of checked out files exist on
disk.

Would it be possible to make it work w/o hard links? Note that direct mode
does avoid two copies of files.

IIRC the main reason for the hard link is so, when git checkout deletes a
work tree file, the only copy of the file is not lost. Seems this would
need a git hook run before checkout to rescue such files.

Also some parts of git-annex's code, including `withObjectLoc`, assume
that the .annex/objects is present, and so it would need to be changed
to look at the work tree file. --[[Joey]]

> Git hook is not sufficient. Consider the case of "rm file; git checkout file"
> Without hard links, if the only copy of the annex object was in that
> deleted file, it can't be restored. Now, direct mode did have the same
> problem, but it didn't support `git checkout`, so the user didn't have
> reason to expect such a workflow to work.
> 
> So, I think this is not possible to implement in a way that won't
> lead to users experiencing data loss when using it and doing 
> perfectly normal git things like this.
> 
> (Although to be fair, annex.thin has its own data loss scenarios,
> involving modifying a file potentially losing the only copy of
> the old version. The difference, I think, is that with it,
> you modify the file yourself and so lose the old version; the data
> loss does not happen when you run git checkout or git pull!)
> 
> In the meantime,
> git-annex has gotten support for directory special remotes with
> import/export tree. This can be used instead, for use cases such as a
> device with a FAT filesystem. The git-annex repo can live on another
> filesystem that does support hard links or symlinks, or where using
> double disk space is not as much of a problem, or can even be a bare
> git repo. That syncs up with the FAT device through tree import and
> export. Once content has been imported to the git-annex repo,
> the user can delete files from the FAT device without losing data.
> 
> So this seems about as good as it can get. [[done]] --[[Joey]]
