From 466ad37954e4735f2f5a38bc47a78d9088b42c00 Mon Sep 17 00:00:00 2001 From: Bert Wesarg Date: Thu, 7 Oct 2010 23:05:08 +0200 Subject: [PATCH] tg-summary: accept -i/-w Signed-off-by: Bert Wesarg --- README | 4 ++++ contrib/tg-completion.bash | 4 ++++ tg-summary.sh | 21 +++++++++++++++------ 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/README b/README index 48db36a..fa9d63f 100644 --- a/README +++ b/README @@ -370,6 +370,10 @@ tg summary branches in a machine-readable format. Feed this to "tsort" to get the output from --sort. + Options: + -i Use TopGit meta data from the index instead of branch + -w Use TopGit meta data from the working tree instead of branch + TODO: Speed up by an order of magnitude TODO: Text graph view diff --git a/contrib/tg-completion.bash b/contrib/tg-completion.bash index 48e47c7..eff85ee 100755 --- a/contrib/tg-completion.bash +++ b/contrib/tg-completion.bash @@ -426,7 +426,11 @@ _tg_summary () *) __tgcomp " --graphviz + --sort + --deps -t + -i + -w " esac } diff --git a/tg-summary.sh b/tg-summary.sh index 612bd27..1c99e22 100644 --- a/tg-summary.sh +++ b/tg-summary.sh @@ -7,13 +7,16 @@ terse= 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) @@ -23,7 +26,7 @@ while [ -n "$1" ]; do --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 @@ -68,8 +71,11 @@ process_branch() 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' @@ -88,7 +94,7 @@ process_branch() 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)" @@ -99,7 +105,7 @@ process_branch() } if [ -n "$deps" ]; then - list_deps + list_deps $head_from exit 0 fi @@ -113,7 +119,10 @@ git for-each-ref refs/top-bases | 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 -- 2.11.4.GIT