Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes: > diff --git a/read-cache.c b/read-cache.c > index 4362b11..a74e4a7 100644 > --- a/read-cache.c > +++ b/read-cache.c > @@ -382,6 +382,12 @@ int add_file_to_index(struct index_state *istate, const char *path, int verbose) > struct cache_entry *ent; > int pos = index_name_pos(istate, path, namelen); > > + /* might be unmerged */ > + if (pos < 0 && 1-pos < istate->cache_nr && > + namelen == ce_namelen(istate->cache[1-pos]) && > + !memcmp(path, istate->cache[1-pos]->name, > + namelen)) > + pos = 1-pos; > ent = (0 <= pos) ? istate->cache[pos] : NULL; > ce->ce_mode = ce_mode_from_stat(ent, st.st_mode); > } Hmph. * Are you sure about (1-pos)? * I _think_ we would want to favor our stage (i.e. #2) when unmerged, over other stages. Perhaps like this: if (pos < 0) { int a_pos = -1, our_pos = -1; pos = -pos-1; while ((pos < istate->cache_nr) && namelen == ce_namelen(istate->cache[pos]) && !memcmp(path, istate->cache[pos]->name, namelen)) if (a_pos < 0) a_pos = pos; if (ce_stage(istate->cache[pos]) == 2) our_pos = pos; pos++; } if (our_pos >= 0) pos = our_pos; else if (a_pos >= 0) pos = a_pos; else pos = -1; } ent = (0 <= pos) ? istate->cache[pos] : NULL; ce->ce_mode = ce_mode_from_stat(ent, st.st_mode); - 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