]>
git.ipfire.org Git - thirdparty/git.git/blob - merge-ort-wrappers.c
5 #include "merge-ort-wrappers.h"
9 static int unclean(struct merge_options
*opt
, struct tree
*head
)
11 /* Sanity check on repo state; index must match head */
12 struct strbuf sb
= STRBUF_INIT
;
14 if (head
&& repo_index_has_changes(opt
->repo
, head
, &sb
)) {
15 error(_("Your local changes to the following files would be overwritten by merge:\n %s"),
24 int merge_ort_nonrecursive(struct merge_options
*opt
,
27 struct tree
*merge_base
)
29 struct merge_result result
;
31 if (unclean(opt
, head
))
34 if (oideq(&merge_base
->object
.oid
, &merge
->object
.oid
)) {
35 printf_ln(_("Already up to date."));
39 memset(&result
, 0, sizeof(result
));
40 merge_incore_nonrecursive(opt
, merge_base
, head
, merge
, &result
);
41 merge_switch_to_result(opt
, head
, &result
, 1, 1);
46 int merge_ort_recursive(struct merge_options
*opt
,
49 struct commit_list
*merge_bases
,
50 struct commit
**result
)
52 struct tree
*head
= repo_get_commit_tree(opt
->repo
, side1
);
53 struct merge_result tmp
;
55 if (unclean(opt
, head
))
58 memset(&tmp
, 0, sizeof(tmp
));
59 merge_incore_recursive(opt
, merge_bases
, side1
, side2
, &tmp
);
60 merge_switch_to_result(opt
, head
, &tmp
, 1, 1);