3 #include "merge-ort-wrappers.h"
7 static int unclean(struct merge_options
*opt
, struct tree
*head
)
9 /* Sanity check on repo state; index must match head */
10 struct strbuf sb
= STRBUF_INIT
;
12 if (head
&& repo_index_has_changes(opt
->repo
, head
, &sb
)) {
13 fprintf(stderr
, _("Your local changes to the following files would be overwritten by merge:\n %s"),
22 int merge_ort_nonrecursive(struct merge_options
*opt
,
25 struct tree
*merge_base
)
27 struct merge_result result
;
29 if (unclean(opt
, head
))
32 if (oideq(&merge_base
->object
.oid
, &merge
->object
.oid
)) {
33 printf_ln(_("Already up to date."));
37 memset(&result
, 0, sizeof(result
));
38 merge_incore_nonrecursive(opt
, merge_base
, head
, merge
, &result
);
39 merge_switch_to_result(opt
, head
, &result
, 1, 1);
44 int merge_ort_recursive(struct merge_options
*opt
,
47 struct commit_list
*merge_bases
,
48 struct commit
**result
)
50 struct tree
*head
= repo_get_commit_tree(opt
->repo
, side1
);
51 struct merge_result tmp
;
53 if (unclean(opt
, head
))
56 memset(&tmp
, 0, sizeof(tmp
));
57 merge_incore_recursive(opt
, merge_bases
, side1
, side2
, &tmp
);
58 merge_switch_to_result(opt
, head
, &tmp
, 1, 1);