Skip to content

Commit

Permalink
read-cache: be specific what part of the index has changed
Browse files Browse the repository at this point in the history
cache entry additions, removals and modifications are separated
out. The rest of changes are still in the catch-all flag
SOMETHING_CHANGED, which would be more specific later.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
pclouds authored and gitster committed Jun 13, 2014
1 parent ad837d9 commit e636a7b
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 9 deletions.
6 changes: 3 additions & 3 deletions builtin/update-index.c
Expand Up @@ -56,7 +56,7 @@ static int mark_ce_flags(const char *path, int flag, int mark)
else
active_cache[pos]->ce_flags &= ~flag;
cache_tree_invalidate_path(active_cache_tree, path);
active_cache_changed = 1;
active_cache_changed = SOMETHING_CHANGED;
return 0;
}
return -1;
Expand Down Expand Up @@ -268,7 +268,7 @@ static void chmod_path(int flip, const char *path)
goto fail;
}
cache_tree_invalidate_path(active_cache_tree, path);
active_cache_changed = 1;
active_cache_changed = SOMETHING_CHANGED;
report("chmod %cx '%s'", flip, path);
return;
fail:
Expand Down Expand Up @@ -889,7 +889,7 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
INDEX_FORMAT_LB, INDEX_FORMAT_UB);

if (the_index.version != preferred_index_format)
active_cache_changed = 1;
active_cache_changed = SOMETHING_CHANGED;
the_index.version = preferred_index_format;
}

Expand Down
5 changes: 5 additions & 0 deletions cache.h
Expand Up @@ -268,6 +268,11 @@ static inline unsigned int canon_mode(unsigned int mode)

#define cache_entry_size(len) (offsetof(struct cache_entry,name) + (len) + 1)

#define SOMETHING_CHANGED (1 << 0) /* unclassified changes go here */
#define CE_ENTRY_CHANGED (1 << 1)
#define CE_ENTRY_REMOVED (1 << 2)
#define CE_ENTRY_ADDED (1 << 3)

struct index_state {
struct cache_entry **cache;
unsigned int version;
Expand Down
11 changes: 6 additions & 5 deletions read-cache.c
Expand Up @@ -51,7 +51,7 @@ static void replace_index_entry(struct index_state *istate, int nr, struct cache
remove_name_hash(istate, old);
free(old);
set_index_entry(istate, nr, ce);
istate->cache_changed = 1;
istate->cache_changed |= CE_ENTRY_CHANGED;
}

void rename_index_entry_at(struct index_state *istate, int nr, const char *new_name)
Expand Down Expand Up @@ -482,7 +482,7 @@ int remove_index_entry_at(struct index_state *istate, int pos)
record_resolve_undo(istate, ce);
remove_name_hash(istate, ce);
free(ce);
istate->cache_changed = 1;
istate->cache_changed |= CE_ENTRY_REMOVED;
istate->cache_nr--;
if (pos >= istate->cache_nr)
return 0;
Expand Down Expand Up @@ -512,7 +512,7 @@ void remove_marked_cache_entries(struct index_state *istate)
}
if (j == istate->cache_nr)
return;
istate->cache_changed = 1;
istate->cache_changed |= CE_ENTRY_REMOVED;
istate->cache_nr = j;
}

Expand Down Expand Up @@ -1002,7 +1002,7 @@ int add_index_entry(struct index_state *istate, struct cache_entry *ce, int opti
istate->cache + pos,
(istate->cache_nr - pos - 1) * sizeof(ce));
set_index_entry(istate, pos, ce);
istate->cache_changed = 1;
istate->cache_changed |= CE_ENTRY_ADDED;
return 0;
}

Expand Down Expand Up @@ -1101,6 +1101,7 @@ static struct cache_entry *refresh_cache_ent(struct index_state *istate,
!(ce->ce_flags & CE_VALID))
updated->ce_flags &= ~CE_VALID;

/* istate->cache_changed is updated in the caller */
return updated;
}

Expand Down Expand Up @@ -1182,7 +1183,7 @@ int refresh_index(struct index_state *istate, unsigned int flags,
* means the index is not valid anymore.
*/
ce->ce_flags &= ~CE_VALID;
istate->cache_changed = 1;
istate->cache_changed |= CE_ENTRY_CHANGED;
}
if (quiet)
continue;
Expand Down
2 changes: 1 addition & 1 deletion resolve-undo.c
Expand Up @@ -110,7 +110,7 @@ void resolve_undo_clear_index(struct index_state *istate)
string_list_clear(resolve_undo, 1);
free(resolve_undo);
istate->resolve_undo = NULL;
istate->cache_changed = 1;
istate->cache_changed = SOMETHING_CHANGED;
}

int unmerge_index_entry_at(struct index_state *istate, int pos)
Expand Down

0 comments on commit e636a7b

Please sign in to comment.