Merge branch 'nd/the-index-final'

The assumption to work on the single "in-core index" instance has
been reduced from the library-ish part of the codebase.

* nd/the-index-final:
  cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch
  read-cache.c: remove the_* from index_has_changes()
  merge-recursive.c: remove implicit dependency on the_repository
  merge-recursive.c: remove implicit dependency on the_index
  sha1-name.c: remove implicit dependency on the_index
  read-cache.c: replace update_index_if_able with repo_&
  read-cache.c: kill read_index()
  checkout: avoid the_index when possible
  repository.c: replace hold_locked_index() with repo_hold_locked_index()
  notes-utils.c: remove the_repository references
  grep: use grep_opt->repo instead of explict repo argument
This commit is contained in:
Junio C Hamano
2019-02-06 22:05:22 -08:00
74 changed files with 394 additions and 296 deletions

View File

@ -3,7 +3,6 @@
*
* Copyright (C) Linus Torvalds, 2005
*/
#define NO_THE_INDEX_COMPATIBILITY_MACROS
#include "cache.h"
#include "config.h"
#include "diff.h"
@ -95,7 +94,6 @@ static struct mem_pool *find_mem_pool(struct index_state *istate)
return *pool_ptr;
}
struct index_state the_index;
static const char *alternate_index_output;
static void set_index_entry(struct index_state *istate, int nr, struct cache_entry *ce)
@ -1733,16 +1731,6 @@ static int read_index_extension(struct index_state *istate,
return 0;
}
int hold_locked_index(struct lock_file *lk, int lock_flags)
{
return hold_lock_file_for_update(lk, get_index_file(), lock_flags);
}
int read_index(struct index_state *istate)
{
return read_index_from(istate, get_index_file(), get_git_dir());
}
static struct cache_entry *create_from_disk(struct mem_pool *ce_mem_pool,
unsigned int version,
struct ondisk_cache_entry *ondisk,
@ -2375,22 +2363,20 @@ int unmerged_index(const struct index_state *istate)
return 0;
}
int index_has_changes(struct index_state *istate,
struct tree *tree,
struct strbuf *sb)
int repo_index_has_changes(struct repository *repo,
struct tree *tree,
struct strbuf *sb)
{
struct index_state *istate = repo->index;
struct object_id cmp;
int i;
if (istate != &the_index) {
BUG("index_has_changes cannot yet accept istate != &the_index; do_diff_cache needs updating first.");
}
if (tree)
cmp = tree->object.oid;
if (tree || !get_oid_tree("HEAD", &cmp)) {
struct diff_options opt;
repo_diff_setup(the_repository, &opt);
repo_diff_setup(repo, &opt);
opt.flags.exit_with_status = 1;
if (!sb)
opt.flags.quick = 1;
@ -2664,9 +2650,9 @@ out:
return 0;
}
static int verify_index(const struct index_state *istate)
static int repo_verify_index(struct repository *repo)
{
return verify_index_from(istate, get_index_file());
return verify_index_from(repo->index, repo->index_file);
}
static int has_racy_timestamp(struct index_state *istate)
@ -2682,11 +2668,13 @@ static int has_racy_timestamp(struct index_state *istate)
return 0;
}
void update_index_if_able(struct index_state *istate, struct lock_file *lockfile)
void repo_update_index_if_able(struct repository *repo,
struct lock_file *lockfile)
{
if ((istate->cache_changed || has_racy_timestamp(istate)) &&
verify_index(istate))
write_locked_index(istate, lockfile, COMMIT_LOCK);
if ((repo->index->cache_changed ||
has_racy_timestamp(repo->index)) &&
repo_verify_index(repo))
write_locked_index(repo->index, lockfile, COMMIT_LOCK);
else
rollback_lock_file(lockfile);
}
@ -3223,12 +3211,14 @@ out:
* state can call this and check its return value, instead of calling
* read_cache().
*/
int read_index_unmerged(struct index_state *istate)
int repo_read_index_unmerged(struct repository *repo)
{
struct index_state *istate;
int i;
int unmerged = 0;
read_index(istate);
repo_read_index(repo);
istate = repo->index;
for (i = 0; i < istate->cache_nr; i++) {
struct cache_entry *ce = istate->cache[i];
struct cache_entry *new_ce;