Signed-off-by: Jaime Soriano Pastor <jsorianopastor@xxxxxxxxx> --- read-cache.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/read-cache.c b/read-cache.c index 7f5645e..c932b83 100644 --- a/read-cache.c +++ b/read-cache.c @@ -1933,6 +1933,7 @@ int read_index_unmerged(struct index_state *istate) { int i; int unmerged = 0; + struct cache_entry *merged_ce = NULL; read_index(istate); for (i = 0; i < istate->cache_nr; i++) { @@ -1940,9 +1941,26 @@ int read_index_unmerged(struct index_state *istate) struct cache_entry *new_ce; int size, len; - if (!ce_stage(ce)) + if (!ce_stage(ce)) { + merged_ce = ce; continue; + } unmerged = 1; + if (merged_ce && ce_same_name(merged_ce, ce)) { + warning("Unexpected stages for merged file '%s':", + merged_ce->name); + i--; + while (i < istate->cache_nr && + ce_same_name(merged_ce, istate->cache[i])) { + ce = istate->cache[i++]; + warning("%06o %s %d", + ce->ce_mode, sha1_to_hex(ce->sha1), ce_stage(ce)); + } + i--; + merged_ce->ce_flags = create_ce_flags(0) | CE_CONFLICTED; + merged_ce = NULL; + continue; + } len = ce_namelen(ce); size = cache_entry_size(len); new_ce = xcalloc(1, size); @@ -1953,7 +1971,6 @@ int read_index_unmerged(struct index_state *istate) if (add_index_entry(istate, new_ce, 0)) return error("%s: cannot drop to stage #0", new_ce->name); - i = index_name_pos(istate, new_ce->name, len); } return unmerged; } -- 2.0.4.4.gaf54b2b -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html