summaryrefslogtreecommitdiff
path: root/merge-recursive.h
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2008-09-25 09:49:19 -0700
committerShawn O. Pearce <spearce@spearce.org>2008-09-25 09:49:19 -0700
commited520a8f270253f4a779aece1352b10fb9a689de (patch)
treed4e6f8d587781821b9d642ef23c7d60abaa2068e /merge-recursive.h
parent1ad6d46235d135582d5cbb91ec0186b485c7b5c1 (diff)
parent4271666046b4b3e655eab88821096539099f3b14 (diff)
downloadgit-ed520a8f270253f4a779aece1352b10fb9a689de.tar.gz
Merge branch 'mv/merge-recursive'
* mv/merge-recursive: builtin-merge: release the lockfile in try_merge_strategy() merge-recursive: get rid of virtual_id merge-recursive: move current_{file,directory}_set to struct merge_options merge-recursive: move the global obuf to struct merge_options merge-recursive: get rid of the index_only global variable merge-recursive: move call_depth to struct merge_options cherry-pick/revert: make direct internal call to merge_tree() builtin-merge: avoid run_command_v_opt() for recursive and subtree merge-recursive: introduce merge_options merge-recursive.c: Add more generic merge_recursive_generic() Split out merge_recursive() to merge-recursive.c
Diffstat (limited to 'merge-recursive.h')
-rw-r--r--merge-recursive.h42
1 files changed, 35 insertions, 7 deletions
diff --git a/merge-recursive.h b/merge-recursive.h
index f37630a8ad..fd138ca140 100644
--- a/merge-recursive.h
+++ b/merge-recursive.h
@@ -1,20 +1,48 @@
#ifndef MERGE_RECURSIVE_H
#define MERGE_RECURSIVE_H
-int merge_recursive(struct commit *h1,
+#include "string-list.h"
+
+struct merge_options {
+ const char *branch1;
+ const char *branch2;
+ unsigned subtree_merge : 1;
+ unsigned buffer_output : 1;
+ int verbosity;
+ int diff_rename_limit;
+ int merge_rename_limit;
+ int call_depth;
+ struct strbuf obuf;
+ struct string_list current_file_set;
+ struct string_list current_directory_set;
+};
+
+/* merge_trees() but with recursive ancestor consolidation */
+int merge_recursive(struct merge_options *o,
+ struct commit *h1,
struct commit *h2,
- const char *branch1,
- const char *branch2,
struct commit_list *ancestors,
struct commit **result);
-int merge_trees(struct tree *head,
+/* rename-detecting three-way merge, no recursion */
+int merge_trees(struct merge_options *o,
+ struct tree *head,
struct tree *merge,
struct tree *common,
- const char *branch1,
- const char *branch2,
struct tree **result);
-struct tree *write_tree_from_memory(void);
+/*
+ * "git-merge-recursive" can be fed trees; wrap them into
+ * virtual commits and call merge_recursive() proper.
+ */
+int merge_recursive_generic(struct merge_options *o,
+ const unsigned char *head,
+ const unsigned char *merge,
+ int num_ca,
+ const unsigned char **ca,
+ struct commit **result);
+
+void init_merge_options(struct merge_options *o);
+struct tree *write_tree_from_memory(struct merge_options *o);
#endif