[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="209.250.56.55"
 subject="theory"
 date="2014-07-09T18:31:07Z"
 content="""
Suppose we have 2 mergeDirect's A and B running at the same time somehow, with B around 3 seconds behind A, and this sequence of events occurs:

1. A copies index file to index.lock
2. A stages an empty commit
3. B copies index file to index.lock
4. A finishes its commit, and so renames index.lock back to index.
5. B runs stageMerge

So, B is now running stageMerge with `GIT_INDEX_FILE` pointing to an index.lock that DNE. As noted above, this causes a deletion of all files to get staged by B.

If this is the problem, git-annex could fix it using a real lock file. (The index.lock only prevents other git commands from manipulating the index during the merge.)
"""]]
