Thanks for your reviews. > In the original "trivial merge" mode, the command takes three trees > without having to have this new option. In the new "write-tree" > mode, currently it is incapable of taking the base, but it does not > have to stay that way. Wouldn't it be sufficient to update the UI > to > > git merge-tree [--write-tree] [<options>] [<base-commit>] <branch1> <branch2> > git merge-tree [--trivial-merge] <base-commit> <branch1> <branch2> > > IOW, when you want to supply the base, you'd be explicit and ask for > the new "write-tree" mode, i.e. > > $ git merge-tree --write-tree $(git merge-base branch^ branch) HEAD branch > > would be how you would use merge-tree to cherry-pick the commit at > the tip of the branch on top of the current commit. Referring to Newren's reply, if we need to implement octopus merges for git-merge-tree in the future, still need a new option, so I haven't modified it yet. >> @@ -402,6 +403,7 @@ struct merge_tree_options { >> int allow_unrelated_histories; >> int show_messages; >> int name_only; >> + char* merge_base; > > Style. We write in C, not in C++, and our asterisks stick to variables and members of structs, not types. Done.