diff options
-rw-r--r-- | Documentation/git-merge-base.txt | 18 | ||||
-rw-r--r-- | merge-base.c | 9 |
2 files changed, 20 insertions, 7 deletions
diff --git a/Documentation/git-merge-base.txt b/Documentation/git-merge-base.txt index d1d56f194a..6099be2add 100644 --- a/Documentation/git-merge-base.txt +++ b/Documentation/git-merge-base.txt @@ -8,16 +8,26 @@ git-merge-base - Finds as good a common ancestor as possible for a merge SYNOPSIS -------- -'git-merge-base' <commit> <commit> +'git-merge-base' [--all] <commit> <commit> DESCRIPTION ----------- -"git-merge-base" finds as good a common ancestor as possible. Given a -selection of equally good common ancestors it should not be relied on -to decide in any particular way. + +"git-merge-base" finds as good a common ancestor as possible between +the two commits. That is, given two commits A and B 'git-merge-base A +B' will output a commit which is reachable from both A and B through +the parent relationship. + +Given a selection of equally good common ancestors it should not be +relied on to decide in any particular way. The "git-merge-base" algorithm is still in flux - use the source... +OPTIONS +------- +--all:: + Output all common ancestors for the two commits instead of + just one. Author ------ diff --git a/merge-base.c b/merge-base.c index f0dc06ef55..4856ca01c3 100644 --- a/merge-base.c +++ b/merge-base.c @@ -82,8 +82,9 @@ static struct commit *interesting(struct commit_list *list) * commit B. * * - * Another pathological example how this thing can fail to mark an ancestor - * of a merge base as UNINTERESTING without the postprocessing phase. + * Another pathological example how this thing used to fail to mark an + * ancestor of a merge base as UNINTERESTING before we introduced the + * postprocessing phase (mark_reachable_commits). * * 2 * H @@ -118,7 +119,9 @@ static struct commit *interesting(struct commit_list *list) * D7 2 3 7 7 3 2 1 2 * E7 2 3 7 7 7 2 1 2 * - * and we end up showing E as an interesting merge base. + * and we ended up showing E as an interesting merge base. + * The postprocessing phase re-injects C and continues traversal + * to contaminate D and E. */ static int show_all = 0; |