graphviz=
sort=
deps=
-
+head_from=
## Parse options
while [ -n "$1" ]; do
arg="$1"; shift
case "$arg" in
+ -i|-w)
+ [ -z "$head_from" ] || die "-i and -w are mutually exclusive"
+ head_from="$arg";;
-t)
terse=1;;
--graphviz)
--deps)
deps=1;;
*)
- echo "Usage: tg [...] summary [-t | --sort | --deps | --graphviz]" >&2
+ echo "Usage: tg [...] summary [-t | --sort | --deps | --graphviz] [-i | -w]" >&2
exit 1;;
esac
done
fi
if [ -n "$sort" ]; then
- tsort_input=`mktemp`
+ tsort_input="$(get_temp tg-summary-sort)"
exec 4>$tsort_input
exec 5<$tsort_input
- rm $tsort_input
fi
## List branches
current=' '
[ "$name" != "$curname" ] || current='>'
+ from=$head_from
+ [ "$name" = "$curname" ] ||
+ from=
nonempty=' '
- ! branch_empty "$name" || nonempty='0'
+ ! branch_empty "$name" $from || nonempty='0'
remote=' '
[ -z "$base_remote" ] || remote='l'
! has_remote "$name" || remote='r'
branch_contains "$name" "refs/top-bases/$name" || base_update='B'
if [ "$(git rev-parse "$name")" != "$rev" ]; then
- subject="$(git cat-file blob "$name:.topmsg" | sed -n 's/^Subject: //p')"
+ subject="$(cat_file "$name:.topmsg" $from | sed -n 's/^Subject: //p')"
else
# No commits yet
subject="(No commits)"
}
if [ -n "$deps" ]; then
- list_deps
+ list_deps $head_from
exit 0
fi
if [ -n "$terse" ]; then
echo "$name"
elif [ -n "$graphviz$sort" ]; then
- git cat-file blob "$name:.topdeps" | while read dep; do
+ from=$head_from
+ [ "$name" = "$curname" ] ||
+ from=
+ cat_file "$name:.topdeps" $from | while read dep; do
dep_is_tgish=true
ref_exists "refs/top-bases/$dep" ||
dep_is_tgish=false
if ! "$dep_is_tgish" || ! branch_annihilated $dep; then
if [ -n "$graphviz" ]; then
echo "\"$name\" -> \"$dep\";"
+ if [ "$name" = "$curname" ] || [ "$dep" = "$curname" ]; then
+ echo "\"$curname\" [style=filled,fillcolor=yellow];"
+ fi
else
echo "$name $dep" >&4
fi