aboutsummaryrefslogtreecommitdiff
path: root/doc/bugs/bad_merge_commit_deleting_all_files/comment_3_be42de12faf15562265ad6cf8964f5db._comment
blob: dd689eae78ca8a92ba16ac5e052fd98b2a6e478d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[[!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.)
"""]]