Stephen Bash <bash@xxxxxxxxxxx> writes: > From reading the docs it's obvious the current -Xours and -Xtheirs > expect to work on hunks, so I (mostly) understand the current > behavior, but as a user it feels like "I'm telling you how to > resolve conflicts, please do the same thing for binary files". Even though merge-recursive accepts -Xours/-Xtheirs, I do not think the low-level merge machinery for anything but the text merge is aware of the option. It may be just the matter of something like this, though (completely untested). ll-merge.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git i/ll-merge.c w/ll-merge.c index f3f7692..fee578f 100644 --- i/ll-merge.c +++ w/ll-merge.c @@ -46,16 +46,31 @@ static int ll_binary_merge(const struct ll_merge_driver *drv_unused, assert(opts); /* - * The tentative merge result is "ours" for the final round, - * or common ancestor for an internal merge. Still return - * "conflicted merge" status. + * The tentative merge result is the or common ancestor for an internal merge. */ - stolen = opts->virtual_ancestor ? orig : src1; + if (opts->virtual_ancestor) { + stolen = orig; + } else { + switch (opts->variant) { + default: + case XDL_MERGE_FAVOR_OURS: + stolen = src1; + break; + case XDL_MERGE_FAVOR_THEIRS: + stolen = src2; + break; + } + } result->ptr = stolen->ptr; result->size = stolen->size; stolen->ptr = NULL; - return 1; + + /* + * With -Xtheirs or -Xours, we have cleanly merged; + * otherwise we got a conflict. + */ + return (opts->variant ? 0 : 1); } static int ll_xdl_merge(const struct ll_merge_driver *drv_unused, -- 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