diff options
-rw-r--r-- | Documentation/git-merge-base.txt | 18 | ||||
-rw-r--r-- | Makefile | 5 | ||||
-rwxr-xr-x | git-grep.sh | 62 | ||||
-rw-r--r-- | merge-base.c | 9 |
4 files changed, 23 insertions, 71 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 ------ @@ -124,7 +124,7 @@ SCRIPT_SH = \ git-tag.sh git-verify-tag.sh \ git-applymbox.sh git-applypatch.sh git-am.sh \ git-merge.sh git-merge-stupid.sh git-merge-octopus.sh \ - git-merge-resolve.sh git-merge-ours.sh git-grep.sh \ + git-merge-resolve.sh git-merge-ours.sh \ git-lost-found.sh SCRIPT_PERL = \ @@ -169,7 +169,8 @@ PROGRAMS = \ git-describe$X git-merge-tree$X git-blame$X git-imap-send$X BUILT_INS = git-log$X git-whatchanged$X git-show$X \ - git-count-objects$X git-diff$X git-push$X + git-count-objects$X git-diff$X git-push$X \ + git-grep$X # what 'all' will build and 'install' will install, in gitexecdir ALL_PROGRAMS = $(PROGRAMS) $(SIMPLE_PROGRAMS) $(SCRIPTS) diff --git a/git-grep.sh b/git-grep.sh deleted file mode 100755 index ad4f2fe810..0000000000 --- a/git-grep.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/sh -# -# Copyright (c) Linus Torvalds, 2005 -# - -USAGE='[<option>...] [-e] <pattern> [<path>...]' -SUBDIRECTORY_OK='Yes' -. git-sh-setup - -got_pattern () { - if [ -z "$no_more_patterns" ] - then - pattern="$1" no_more_patterns=yes - else - die "git-grep: do not specify more than one pattern" - fi -} - -no_more_patterns= -pattern= -flags=() -git_flags=() -while : ; do - case "$1" in - -o|--cached|--deleted|--others|--killed|\ - --ignored|--modified|--exclude=*|\ - --exclude-from=*|\--exclude-per-directory=*) - git_flags=("${git_flags[@]}" "$1") - ;; - -e) - got_pattern "$2" - shift - ;; - -A|-B|-C|-D|-d|-f|-m) - flags=("${flags[@]}" "$1" "$2") - shift - ;; - --) - # The rest are git-ls-files paths - shift - break - ;; - -*) - flags=("${flags[@]}" "$1") - ;; - *) - if [ -z "$no_more_patterns" ] - then - got_pattern "$1" - shift - fi - [ "$1" = -- ] && shift - break - ;; - esac - shift -done -[ "$pattern" ] || { - usage -} -git-ls-files -z "${git_flags[@]}" -- "$@" | - xargs -0 grep "${flags[@]}" -e "$pattern" -- 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; |