git-commit-vandalism/git-show-branches-script
Junio C Hamano 86947d72d4 Pass options to underlying git-rev-list from show-branches.
This lets you say "git show-branches --max-count=30".

Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-08-17 12:11:36 -07:00

62 lines
1020 B
Bash
Executable File

#!/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