Gang Hu [off-list ref] writes:
If a crash happens after the rename(), the data may have not been
completely flushed into the index file, so the user may face an empty
or corrupted index file.
Yeah, probably we should add fsync_or_die() at the end of write_index()
in read-cache.c, possibly protect it with fsync_object_files just like
we do in close_sha1_file() in sha1_file.c for loose object files.
I think the real fix would be to update the write_index() codepath to
use the csum-file API, though. Then sha1close() will give us the fsync
behaviour for free.