mirror of
https://github.com/git/git.git
synced 2024-11-19 02:33:55 +01:00
traverse_trees_recursive(): propagate merge errors up
There were few places where merge errors detected deeper in the call chain were ignored and not propagated up the callchain to the caller. Most notably, this caused switching branches with "git checkout" to ignore a path modified in a work tree are different between the HEAD version and the commit being switched to, which it internally notices but ignores it, resulting in an incorrect two-way merge and loss of the change in the work tree. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
1caeacc1f2
commit
542c264b01
@ -144,8 +144,7 @@ int traverse_trees_recursive(int n, unsigned long dirmask, unsigned long df_conf
|
||||
sha1 = names[i].sha1;
|
||||
fill_tree_descriptor(t+i, sha1);
|
||||
}
|
||||
traverse_trees(n, t, &newinfo);
|
||||
return 0;
|
||||
return traverse_trees(n, t, &newinfo);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -306,7 +305,9 @@ static int unpack_callback(int n, unsigned long mask, unsigned long dirmask, str
|
||||
if (src[0])
|
||||
conflicts |= 1;
|
||||
}
|
||||
traverse_trees_recursive(n, dirmask, conflicts, names, info);
|
||||
if (traverse_trees_recursive(n, dirmask, conflicts,
|
||||
names, info) < 0)
|
||||
return -1;
|
||||
return mask;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user