Users may specify the merge-base multiple times, such as "git merge-tree --merge-base=X --merge-base=Y A B", but found it doesn't work. This patch I fix the description of option "--merge-base". By the way, the amount of the effort support specifying multiple bases from the codebase without these patches feels more or less the same ballpark as these patches. One point worth discussing is whether manually specifying multiple bases is a rarely used feature and do we need to support it in the first version. If needed, It might take a while for me to implement it, and the feature might be delayed to the version after 2.39. Thanks, Kyle Changes since v1: * Changed merge_incore_recursive() to merge_incore_nonrecursive() when merge-base is specified. * Fixed c style problem. * Moved commit lookup/die logic out to the parsing logic in cmd_merge_tree(). * use test_commit for test Changes since v2: * commit message * Rebased on top of en/merge-tree-sequence. * Set opt.ancestor to o->merge_base. Because opt.ancestor is a *char. To make it easier to pass parameters, I moved lookup_commit_reference_by_name() to real_ merge() again. * Added test comment. Changes since v3: * support --merge-base in conjunction with --stdin Changes since v4: * commit message * added input format document * changed the input format for specifying the merge-base when --stdin is passed * changed the output when --stdin and --merge-base are used at the same time * add comment for test Changes since v5: * improved test: remove the test repo after the test; avoid sub-shell. Changes since v6: * fixed comment of test Changes since v7: * docs: fix description of the --merge-base option Kyle Zhao (3): merge-tree.c: add --merge-base=<commit> option merge-tree.c: allow specifying the merge-base when --stdin is passed docs: fix description of the `--merge-base` option Documentation/git-merge-tree.txt | 16 ++++++++ builtin/merge-tree.c | 65 ++++++++++++++++++++++++++------ t/t4301-merge-tree-write-tree.sh | 62 ++++++++++++++++++++++++++++++ 3 files changed, 131 insertions(+), 12 deletions(-) base-commit: ec1edbcb56ac05e9980299b05924c5c1b51d68b4 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1397%2Fkeyu98%2Fkz%2Fmerge-tree-option-merge-base-v8 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1397/keyu98/kz/merge-tree-option-merge-base-v8 Pull-Request: https://github.com/gitgitgadget/git/pull/1397 Range-diff vs v7: 1: 1cf1c69b8e8 = 1: 1cf1c69b8e8 merge-tree.c: add --merge-base=<commit> option 2: 48e55d4e97c = 2: 48e55d4e97c merge-tree.c: allow specifying the merge-base when --stdin is passed -: ----------- > 3: c21466d1db0 docs: fix description of the `--merge-base` option -- gitgitgadget