4 #include "merge-ort-wrappers.h"
8 static int unclean(struct merge_options
*opt
, struct tree
*head
)
10 /* Sanity check on repo state; index must match head */
11 struct strbuf sb
= STRBUF_INIT
;
13 if (head
&& repo_index_has_changes(opt
->repo
, head
, &sb
)) {
14 error(_("Your local changes to the following files would be overwritten by merge:\n %s"),
23 int merge_ort_nonrecursive(struct merge_options
*opt
,
26 struct tree
*merge_base
)
28 struct merge_result result
;
30 if (unclean(opt
, head
))
33 if (oideq(&merge_base
->object
.oid
, &merge
->object
.oid
)) {
34 printf_ln(_("Already up to date."));
38 memset(&result
, 0, sizeof(result
));
39 merge_incore_nonrecursive(opt
, merge_base
, head
, merge
, &result
);
40 merge_switch_to_result(opt
, head
, &result
, 1, 1);
45 int merge_ort_recursive(struct merge_options
*opt
,
48 struct commit_list
*merge_bases
,
49 struct commit
**result
)
51 struct tree
*head
= repo_get_commit_tree(opt
->repo
, side1
);
52 struct merge_result tmp
;
54 if (unclean(opt
, head
))
57 memset(&tmp
, 0, sizeof(tmp
));
58 merge_incore_recursive(opt
, merge_bases
, side1
, side2
, &tmp
);
59 merge_switch_to_result(opt
, head
, &tmp
, 1, 1);