You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1020 B
61 lines
1020 B
#!/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
|
|
|