Revert bogus optimization that avoids index file writes

It didn't properly mark all cache updates as being dirty, and
causes merge errors due to that. In particular, it didn't notice
when a file was force-removed.

Besides, it was ugly as hell. I've put in place a slightly cleaner
version, but I've not enabled the optimization because I don't
want to be burned again.
This commit is contained in:
Linus Torvalds
2005-05-06 16:48:43 -07:00
parent a02ebff612
commit ee267527aa
3 changed files with 8 additions and 42 deletions

View File

@ -7,7 +7,7 @@
#include "cache.h"
struct cache_entry **active_cache = NULL;
unsigned int active_nr = 0, active_alloc = 0;
unsigned int active_nr = 0, active_alloc = 0, active_cache_changed = 0;
int cache_match_stat(struct cache_entry *ce, struct stat *st)
{
@ -99,6 +99,7 @@ int cache_name_pos(const char *name, int namelen)
/* Remove entry, return true if there are more entries to go.. */
int remove_entry_at(int pos)
{
active_cache_changed = 1;
active_nr--;
if (pos >= active_nr)
return 0;
@ -130,6 +131,7 @@ int add_cache_entry(struct cache_entry *ce, int ok_to_add)
/* existing match? Just replace it */
if (pos >= 0) {
active_cache_changed = 1;
active_cache[pos] = ce;
return 0;
}
@ -161,6 +163,7 @@ int add_cache_entry(struct cache_entry *ce, int ok_to_add)
if (active_nr > pos)
memmove(active_cache + pos + 1, active_cache + pos, (active_nr - pos - 1) * sizeof(ce));
active_cache[pos] = ce;
active_cache_changed = 1;
return 0;
}