summaryrefslogtreecommitdiff
path: root/merge-recursive.h
Commit message (Collapse)AuthorAgeFilesLines
* merge-recursive: make the error-message generation an extern functionMatthieu Moy2009-11-291-0/+3
| | | | | | | | | | | The construction of the struct unpack_trees_error_msgs was done within git_merge_trees(), which prevented using the same messages easily from another function. [jc: backported for 1.6.5 maint before advice_commit_before_merge] Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* merge-recursive: move current_{file,directory}_set to struct merge_optionsMiklos Vajna2008-09-041-0/+4
| | | | Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
* merge-recursive: move the global obuf to struct merge_optionsMiklos Vajna2008-09-041-0/+1
| | | | Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
* merge-recursive: move call_depth to struct merge_optionsMiklos Vajna2008-09-031-0/+1
| | | | Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
* merge-recursive: introduce merge_optionsMiklos Vajna2008-08-301-13/+29
| | | | | | | | | | | | | | | | | | 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>
* merge-recursive.c: Add more generic merge_recursive_generic()Stephan Beyer2008-08-301-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | merge_recursive_generic() takes, in comparison to to merge_recursive(), no commit ("struct commit *") arguments but SHA ids ("unsigned char *"), and no commit list of bases but an array of refs ("const char **"). This makes it more generic in the case that it can also take the SHA of a tree to merge trees without commits, for the bases, the head and the remote. merge_recursive_generic() also handles locking and updating of the index, which is a common use case of merge_recursive(). This patch also rewrites builtin-merge-recursive.c to make use of merge_recursive_generic(). By doing this, I stumbled over the limitation of 20 bases and I've added a warning if this limitation is exceeded. This patch qualifies make_virtual_commit() as static again because this function is not needed anymore outside merge-recursive.c. Signed-off-by: Stephan Beyer <s-beyer@gmx.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Split out merge_recursive() to merge-recursive.cMiklos Vajna2008-08-301-1/+5
| | | | | | | | | Move most of the of code from builtin-merge-recursive.c to a new file merge-recursive.c and introduce merge_recursive_setup() in there so that builtin-merge-recursive and other builtins call it. Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Build-in merge-recursiveDaniel Barkalow2008-02-091-0/+20
This makes write_tree_from_memory(), which writes the active cache as a tree and returns the struct tree for it, available to other code. It also makes available merge_trees(), which does the internal merge of two trees with a known base, and merge_recursive(), which does the recursive internal merge of two commits with a list of common ancestors. The first two of these will be used by checkout -m, and the third is presumably useful in general, although the implementation of checkout -m which entirely matches the behavior of the shell version does not use it (since it ignores the difference of ancestry between the old branch and the new branch). Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>