git-merge-base/git-show-branch --merge-base: Documentation and test

Currently, the documentation suggests that 'git merge-base -a' and 'git
show-branch --merge-base' are equivalent (in fact it claims that the
former cannot handle more than two revs).

Alas, the handling of more than two revs is very different. Document
this by tests and correct the documentation to reflect this.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Michael J Gruber 2009-08-05 09:59:20 +02:00 committed by Junio C Hamano
parent 995bdc73fe
commit f621a8454d
4 changed files with 16 additions and 4 deletions

View File

@ -27,6 +27,10 @@ commits on the command line. As the most common special case, specifying only
two commits on the command line means computing the merge base between
the given two commits.
As a consequence, the 'merge base' is not necessarily contained in each of the
commit arguments if more than two commits are specified. This is different
from linkgit:git-show-branch[1] when used with the `--merge-base` option.
OPTIONS
-------
-a::

View File

@ -82,9 +82,11 @@ OPTIONS
Synonym to `--more=-1`
--merge-base::
Instead of showing the commit list, just act like the
'git-merge-base -a' command, except that it can accept
more than two heads.
Instead of showing the commit list, determine possible
merge bases for the specified commits. All merge bases
will be contained in all specified commits. This is
different from how linkgit:git-merge-base[1] handles
the case of three or more commits.
--independent::
Among the <reference>s given, display only the ones that

View File

@ -665,7 +665,7 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
OPT_BOOLEAN(0, "sha1-name", &sha1_name,
"name commits with their object names"),
OPT_BOOLEAN(0, "merge-base", &merge_base,
"act like git merge-base -a"),
"show possible merge bases"),
OPT_BOOLEAN(0, "independent", &independent,
"show refs unreachable from any other ref"),
OPT_BOOLEAN(0, "topo-order", &lifo,

View File

@ -149,6 +149,12 @@ test_expect_success 'merge-base A B C' '
test "$MM1" = "$MB"
'
test_expect_success 'merge-base A B C using show-branch' '
MB=$(git show-branch --merge-base MMA MMB MMC) &&
MMR=$(git rev-parse --verify MMR) &&
test "$MMR" = "$MB"
'
test_expect_success 'criss-cross merge-base for octopus-step (setup)' '
git reset --hard MMR &&
test_tick && git commit --allow-empty -m 1 && git tag CC1 &&