Add return value to 'traverse_tree()' callback
This allows the callback to return an error value, but it can also specify which of the tree entries that it actually used up by returning a positive mask value. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
40d934df72
commit
5803c6f8a2
@ -287,31 +287,32 @@ static void unresolved(const struct traverse_info *info, struct name_entry n[3])
|
||||
* The successful merge rules are the same as for the three-way merge
|
||||
* in git-read-tree.
|
||||
*/
|
||||
static void threeway_callback(int n, unsigned long mask, struct name_entry *entry, struct traverse_info *info)
|
||||
static int threeway_callback(int n, unsigned long mask, struct name_entry *entry, struct traverse_info *info)
|
||||
{
|
||||
/* Same in both? */
|
||||
if (same_entry(entry+1, entry+2)) {
|
||||
if (entry[0].sha1) {
|
||||
resolve(info, NULL, entry+1);
|
||||
return;
|
||||
return mask;
|
||||
}
|
||||
}
|
||||
|
||||
if (same_entry(entry+0, entry+1)) {
|
||||
if (entry[2].sha1 && !S_ISDIR(entry[2].mode)) {
|
||||
resolve(info, entry+1, entry+2);
|
||||
return;
|
||||
return mask;
|
||||
}
|
||||
}
|
||||
|
||||
if (same_entry(entry+0, entry+2)) {
|
||||
if (entry[1].sha1 && !S_ISDIR(entry[1].mode)) {
|
||||
resolve(info, NULL, entry+1);
|
||||
return;
|
||||
return mask;
|
||||
}
|
||||
}
|
||||
|
||||
unresolved(info, entry);
|
||||
return mask;
|
||||
}
|
||||
|
||||
static void merge_trees(struct tree_desc t[3], const char *base)
|
||||
|
||||
Reference in New Issue
Block a user