merge-recursive: introduce merge_options
This makes it possible to avoid passing the labels of branches as arguments to merge_recursive(), merge_trees() and merge_recursive_generic(). It also takes care of subtree merge, output buffering, verbosity, and rename limits - these were global variables till now in merge-recursive.c. A new function, named init_merge_options(), is introduced as well, it clears the struct merge_info, then initializes with default values, finally updates the default values based on the config and environment variables. Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
73118f89b8
commit
8a2fce1895
@ -1,26 +1,42 @@
|
||||
#ifndef MERGE_RECURSIVE_H
|
||||
#define MERGE_RECURSIVE_H
|
||||
|
||||
int merge_recursive(struct commit *h1,
|
||||
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;
|
||||
};
|
||||
|
||||
/* 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);
|
||||
extern int merge_recursive_generic(const char **base_list,
|
||||
const unsigned char *head_sha1, const char *head_name,
|
||||
const unsigned char *next_sha1, const char *next_name);
|
||||
int merge_recursive_config(const char *var, const char *value, void *cb);
|
||||
void merge_recursive_setup(int is_subtree_merge);
|
||||
struct tree *write_tree_from_memory(void);
|
||||
|
||||
extern int merge_recursive_verbosity;
|
||||
/*
|
||||
* "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
|
||||
|
||||
Reference in New Issue
Block a user