Signed-off-by: Jaime Soriano Pastor <[email protected]>
---
read-cache.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/read-cache.c b/read-cache.c
index c932b83..d549d0b 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -935,6 +935,7 @@ static int add_index_entry_with_check(struct index_state
*istate, struct cache_e
int ok_to_replace = option & ADD_CACHE_OK_TO_REPLACE;
int skip_df_check = option & ADD_CACHE_SKIP_DFCHECK;
int new_only = option & ADD_CACHE_NEW_ONLY;
+ int replaced = 0;
cache_tree_invalidate_path(istate->cache_tree, ce->name);
pos = index_name_stage_pos(istate, ce->name, ce_namelen(ce),
ce_stage(ce));
@@ -943,9 +944,10 @@ static int add_index_entry_with_check(struct index_state
*istate, struct cache_e
if (pos >= 0) {
if (!new_only)
replace_index_entry(istate, pos, ce);
- return 0;
- }
- pos = -pos-1;
+ replaced = 1;
+ pos++;
+ } else
+ pos = -pos-1;
/*
* Inserting a merged entry ("stage 0") into the index
@@ -953,12 +955,18 @@ static int add_index_entry_with_check(struct index_state
*istate, struct cache_e
*/
if (pos < istate->cache_nr && ce_stage(ce) == 0) {
while (ce_same_name(istate->cache[pos], ce)) {
+ if (replaced)
+ die("Merged and unmerged entries found for "
+ "'%s', check 'git ls-files -s \"%s\"'",
+ ce->name, ce->name);
ok_to_add = 1;
if (!remove_index_entry_at(istate, pos))
break;
}
}
+ if (replaced)
+ return 0;
if (!ok_to_add)
return -1;
if (!verify_path(ce->name))
--
2.0.4.4.gaf54b2b
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html