The current behaviour of git_index_open{bare,inrepo}() is unexpected.
When an index is opened, an in-memory index object is created that is
linked to the index discovered by git_repository_open(). However, this
index object is empty, as the on-disk index is not read. To fully open
the on-disk index file, git_index_read() has to be called. This leads to
confusing behaviour. Consider the following code:
git_index *idx;
git_index_open_inrepo(&idx, repo);
git_index_write(idx);
You would expect this to have no effect, as the index is never
ostensibly manipulated. However, what actually happens is that the index
entries are removed from the on-disk index because the empty in-memory
index object created by open_inrepo() is written back to the disk.
This patch reads the index after opening it.
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| backends | Loading commit data... | |
| block-sha1 | Loading commit data... | |
| ppc | Loading commit data... | |
| unix | Loading commit data... | |
| win32 | Loading commit data... | |
| blob.c | Loading commit data... | |
| blob.h | Loading commit data... | |
| bswap.h | Loading commit data... | |
| cache.c | Loading commit data... | |
| cache.h | Loading commit data... | |
| cc-compat.h | Loading commit data... | |
| commit.c | Loading commit data... | |
| commit.h | Loading commit data... | |
| common.h | Loading commit data... | |
| delta-apply.c | Loading commit data... | |
| delta-apply.h | Loading commit data... | |
| dir.h | Loading commit data... | |
| errors.c | Loading commit data... | |
| filebuf.c | Loading commit data... | |
| filebuf.h | Loading commit data... | |
| fileops.c | Loading commit data... | |
| fileops.h | Loading commit data... | |
| hash.c | Loading commit data... | |
| hash.h | Loading commit data... | |
| hashtable.c | Loading commit data... | |
| hashtable.h | Loading commit data... | |
| index.c | Loading commit data... | |
| index.h | Loading commit data... | |
| map.h | Loading commit data... | |
| mingw-compat.h | Loading commit data... | |
| msvc-compat.h | Loading commit data... | |
| object.c | Loading commit data... | |
| odb.c | Loading commit data... | |
| odb.h | Loading commit data... | |
| odb_loose.c | Loading commit data... | |
| odb_pack.c | Loading commit data... | |
| oid.c | Loading commit data... | |
| pqueue.c | Loading commit data... | |
| pqueue.h | Loading commit data... | |
| refs.c | Loading commit data... | |
| refs.h | Loading commit data... | |
| repository.c | Loading commit data... | |
| repository.h | Loading commit data... | |
| revwalk.c | Loading commit data... | |
| signature.c | Loading commit data... | |
| signature.h | Loading commit data... | |
| t03-data.h | Loading commit data... | |
| tag.c | Loading commit data... | |
| tag.h | Loading commit data... | |
| thread-utils.c | Loading commit data... | |
| thread-utils.h | Loading commit data... | |
| tree.c | Loading commit data... | |
| tree.h | Loading commit data... | |
| util.c | Loading commit data... | |
| util.h | Loading commit data... | |
| vector.c | Loading commit data... | |
| vector.h | Loading commit data... |