| #!/bin/sh |
| # |
| # Show refs and their recent commits. |
| # |
| |
| . git-sh-setup-script || die "Not a git repository" |
| |
| usage () { |
| die "usage: $0 <ref>..." |
| } |
| |
| headref=`readlink $GIT_DIR/HEAD` |
| |
| case "$(git-rev-parse --no-revs)" in '') ;; *) usage ;; esac |
| revs=$(git-rev-parse --revs-only --symbolic --no-flags "$@") |
| flags=$(git-rev-parse --revs-only --flags "$@") |
| case "$revs" in |
| '') |
| revs=$(git-rev-parse --symbolic --all | sed -ne 's|^refs/heads/||p' | |
| sort) |
| shift ;; |
| esac |
| set x $revs |
| shift |
| |
| hh= in= |
| for ref |
| do |
| case "/$headref" in |
| */"$ref") H='*' ;; |
| *) H='!' ;; |
| esac |
| h=`git-rev-parse --verify "$ref^0" 2>/dev/null` || continue |
| l=`git-log-script --max-count=1 --pretty=oneline "$h" | |
| sed -e 's/^[^ ]* //'` |
| hh="$hh $h" |
| echo "$in$H [$ref] $l" |
| in="$in " |
| done |
| set x $hh |
| shift |
| |
| git-rev-list --pretty=oneline $flags $@ | |
| while read v l |
| do |
| in='' |
| for h |
| do |
| b=`git-merge-base $h $v` |
| case "$b" in |
| $v) in="$in+" ;; |
| *) in="$in " ;; |
| esac |
| done |
| |
| echo "$in $l" |
| case "$in" in |
| *' '*) ;; |
| *) break ;; |
| esac |
| done |