Signed-off-by: Bert Wesarg <bert.wesarg@xxxxxxxxxxxxxx> --- 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 ce0c3a6..c96dc5a 100644 README --- a/README +++ b/README @@ -362,6 +362,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 ccf1a32..6a1e182 100755 contrib/tg-completion.bash --- 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 af16888..113efc2 100644 tg-summary.sh --- 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 @@ -69,8 +72,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' @@ -89,7 +95,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)" @@ -100,7 +106,7 @@ process_branch() } if [ -n "$deps" ]; then - list_deps + list_deps $head_from exit 0 fi @@ -114,7 +120,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 -- 1.7.1.1067.g5aeb7 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html