зеркало из https://github.com/microsoft/git.git
repository: add repo reference to index_state
It will be helpful to add behavior to index operations that might trigger an object lookup. Since each index belongs to a specific repository, add a 'repo' pointer to struct index_state that allows access to this repository. Add a BUG() statement if the repo already has an index, and the index already has a repo, but somehow the index points to a different repo. This will prevent future changes from needing to pass an additional 'struct repository *repo' parameter and instead rely only on the 'struct index_state *istate' parameter. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
cae70acf24
Коммит
1fd9ae517c
1
cache.h
1
cache.h
|
@ -328,6 +328,7 @@ struct index_state {
|
||||||
struct ewah_bitmap *fsmonitor_dirty;
|
struct ewah_bitmap *fsmonitor_dirty;
|
||||||
struct mem_pool *ce_mem_pool;
|
struct mem_pool *ce_mem_pool;
|
||||||
struct progress *progress;
|
struct progress *progress;
|
||||||
|
struct repository *repo;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Name hashing */
|
/* Name hashing */
|
||||||
|
|
|
@ -264,6 +264,12 @@ int repo_read_index(struct repository *repo)
|
||||||
if (!repo->index)
|
if (!repo->index)
|
||||||
repo->index = xcalloc(1, sizeof(*repo->index));
|
repo->index = xcalloc(1, sizeof(*repo->index));
|
||||||
|
|
||||||
|
/* Complete the double-reference */
|
||||||
|
if (!repo->index->repo)
|
||||||
|
repo->index->repo = repo;
|
||||||
|
else if (repo->index->repo != repo)
|
||||||
|
BUG("repo's index should point back at itself");
|
||||||
|
|
||||||
return read_index_from(repo->index, repo->index_file, repo->gitdir);
|
return read_index_from(repo->index, repo->index_file, repo->gitdir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче