5 #include "merge-ort-wrappers.h"
10 static int unclean(struct merge_options
*opt
, struct tree
*head
)
12 /* Sanity check on repo state; index must match head */
13 struct strbuf sb
= STRBUF_INIT
;
15 if (head
&& repo_index_has_changes(opt
->repo
, head
, &sb
)) {
16 error(_("Your local changes to the following files would be overwritten by merge:\n %s"),
25 int merge_ort_nonrecursive(struct merge_options
*opt
,
28 struct tree
*merge_base
)
30 struct merge_result result
;
32 if (unclean(opt
, head
))
35 if (oideq(&merge_base
->object
.oid
, &merge
->object
.oid
)) {
36 printf_ln(_("Already up to date."));
40 memset(&result
, 0, sizeof(result
));
41 merge_incore_nonrecursive(opt
, merge_base
, head
, merge
, &result
);
42 merge_switch_to_result(opt
, head
, &result
, 1, 1);
47 int merge_ort_recursive(struct merge_options
*opt
,
50 struct commit_list
*merge_bases
,
51 struct commit
**result
)
53 struct tree
*head
= repo_get_commit_tree(opt
->repo
, side1
);
54 struct merge_result tmp
;
56 if (unclean(opt
, head
))
59 memset(&tmp
, 0, sizeof(tmp
));
60 merge_incore_recursive(opt
, merge_bases
, side1
, side2
, &tmp
);
61 merge_switch_to_result(opt
, head
, &tmp
, 1, 1);