diff options
| author | Shawn O. Pearce <spearce@spearce.org> | 2008-09-25 09:49:19 -0700 |
|---|---|---|
| committer | Shawn O. Pearce <spearce@spearce.org> | 2008-09-25 09:49:19 -0700 |
| commit | ed520a8f270253f4a779aece1352b10fb9a689de (patch) | |
| tree | d4e6f8d587781821b9d642ef23c7d60abaa2068e /merge-recursive.h | |
| parent | 1ad6d46235d135582d5cbb91ec0186b485c7b5c1 (diff) | |
| parent | 4271666046b4b3e655eab88821096539099f3b14 (diff) | |
| download | git-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.h | 42 |
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 |
