|
|
|
@ -1438,6 +1438,21 @@ static struct cache_entry *create_from_disk(struct ondisk_cache_entry *ondisk,
@@ -1438,6 +1438,21 @@ static struct cache_entry *create_from_disk(struct ondisk_cache_entry *ondisk,
|
|
|
|
|
return ce; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void check_ce_order(struct cache_entry *ce, struct cache_entry *next_ce) |
|
|
|
|
{ |
|
|
|
|
int name_compare = strcmp(ce->name, next_ce->name); |
|
|
|
|
if (0 < name_compare) |
|
|
|
|
die("unordered stage entries in index"); |
|
|
|
|
if (!name_compare) { |
|
|
|
|
if (!ce_stage(ce)) |
|
|
|
|
die("multiple stage entries for merged file '%s'", |
|
|
|
|
ce->name); |
|
|
|
|
if (ce_stage(ce) > ce_stage(next_ce)) |
|
|
|
|
die("unordered stage entries for '%s'", |
|
|
|
|
ce->name); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* remember to discard_cache() before reading a different cache! */ |
|
|
|
|
int read_index_from(struct index_state *istate, const char *path) |
|
|
|
|
{ |
|
|
|
@ -1499,6 +1514,9 @@ int read_index_from(struct index_state *istate, const char *path)
@@ -1499,6 +1514,9 @@ int read_index_from(struct index_state *istate, const char *path)
|
|
|
|
|
ce = create_from_disk(disk_ce, &consumed, previous_name); |
|
|
|
|
set_index_entry(istate, i, ce); |
|
|
|
|
|
|
|
|
|
if (i > 0) |
|
|
|
|
check_ce_order(istate->cache[i - 1], ce); |
|
|
|
|
|
|
|
|
|
src_offset += consumed; |
|
|
|
|
} |
|
|
|
|
strbuf_release(&previous_name_buf); |
|
|
|
|