This series is a rewrite of git-merge in C. I already sent a WIP version of this series, it already worked at that time, but I had numerous internal TODOs in the code. I also tried to use the internal API wherever it was possible to avoid the expensive run_command() calls. At the moment I am not aware of any bugs in ugly parts in the code, so I would appreciate if I could get some comments (positive or negative) on it. And yes, I'm aware that it's already late for 1.5.6, I'm sending it out so that I can work on issues pointed out by others in the meantime. Thanks. Miklos Vajna (10): Move split_cmdline() to alias.c Move commit_list_count() to commit.c Move builtin-remote's skip_prefix() to git-compat-util.h Add new test to ensure git-merge handles pull.twohead and pull.octopus parseopt: add a new PARSE_OPT_ARGV0_IS_AN_OPTION option Move read_cache_unmerged() to read-cache.c git-fmt-merge-msg: make it useable from other builtins Introduce commit_list_append() in commit.c Introduce get_octopus_merge_bases() in commit.c Build in merge Makefile | 2 +- alias.c | 54 ++ builtin-fmt-merge-msg.c | 157 ++-- builtin-merge-recursive.c | 8 - builtin-merge.c | 1147 +++++++++++++++++++++++++ builtin-read-tree.c | 24 - builtin-remote.c | 6 - builtin.h | 4 + cache.h | 3 + commit.c | 59 ++ commit.h | 3 + git-merge.sh => contrib/examples/git-merge.sh | 0 git-compat-util.h | 6 + git.c | 54 +-- parse-options.c | 19 +- parse-options.h | 1 + read-cache.c | 24 + t/t7601-merge-pull-config.sh | 57 ++ 18 files changed, 1460 insertions(+), 168 deletions(-) create mode 100644 builtin-merge.c rename git-merge.sh => contrib/examples/git-merge.sh (100%) create mode 100755 t/t7601-merge-pull-config.sh -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html