git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Ping Yin <pkufranky@gmail.com>
To: git@vger.kernel.org
Cc: gitster@pobox.com, Ping Yin <pkufranky@gmail.com>
Subject: [PATCH v2 3/3] git-submodule: New subcommand 'summary' (3) - limit summary size
Date: Sat,  1 Mar 2008 01:34:47 +0800	[thread overview]
Message-ID: <18af168b52a735c33612c9c9e4778d8b8bef1cbc.1204306070.git.pkufranky@gmail.com> (raw)
In-Reply-To: <d6e82710452985611fb75c9d32a1b772bf0cb529.1204306070.git.pkufranky@gmail.com>
In-Reply-To: <80aa1c46ced6f0b92ca2fca3b917d383343b3161.1204306070.git.pkufranky@gmail.com>

This patches teaches git-submodule an option '--summary-limit|-n <number>'
to limit number of commits for the summary. Number 0 will disable summary
and minus number will not limit the summary size.

For beauty and clarification, the last commit for each section (backward
and forward) will always be shown disregarding the given limit. So actual
summary size may be greater than the given limit.

In the same super project of these patch series, 'git submodule -n 2
summary sm1' and 'git submodule -n 3 summary sm1' will show the same.

---------------------------------------
 $ git submodule -n 2 summary sm1
 # Submodules modifiled: sm1
 #
 # * sm1 354cd45...3f751e5:
 #   <one line message for C
 #   <one line message for B
 #   >... (1 more)
 #   >one line message for E
 #
---------------------------------------

Signed-off-by: Ping Yin <pkufranky@gmail.com>
---
 git-submodule.sh |   56 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 53 insertions(+), 3 deletions(-)

diff --git a/git-submodule.sh b/git-submodule.sh
index 8322771..64f1f5c 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -4,7 +4,9 @@
 #
 # Copyright (c) 2007 Lars Hjemli
 
-USAGE='[--quiet] [--cached] [add <repo> [-b branch]|status|init|update|summary [<commit>]] [--] [<path>...]'
+USAGE="[--quiet] [--cached] \
+[add <repo> [-b branch]|status|init|update|summary [-n|--summary-limit <number>] [<commit>]] \
+[--] [<path>...]"
 OPTIONS_SPEC=
 . git-sh-setup
 require_work_tree
@@ -330,6 +332,8 @@ set_name_rev () {
 #
 cmd_summary()
 {
+	summary_limit=-1
+
 	# parse $args after "submodule ... summary".
 	while test $# -ne 0
 	do
@@ -337,6 +341,14 @@ cmd_summary()
 		--cached)
 			cached=1
 			;;
+		-n|--summary-limit)
+			if test -z "$2" || echo "$2" | grep --quiet -v '^-\?[0-9]\+$'
+			then
+				usage
+			fi
+			summary_limit="$2"
+			shift
+			;;
 		--)
 			shift
 			break
@@ -351,6 +363,8 @@ cmd_summary()
 		shift
 	done
 
+	test $summary_limit = 0 && return
+
 	cache_option=${cached:+--cached}
 
 	if rev=$(git rev-parse --verify "$1^0" 2>/dev/null)
@@ -443,8 +457,44 @@ cmd_summary()
 			# Don't give error msg for modification whose dst is not submodule, i.e. deleted or changed to blob
 			test $mod_dst = 160000 && echo "$errmsg"
 		else
-			test -n "$left" && echo "$left"
-			test -n "$right" && echo "$right"
+			lc0=0
+			rc0=0
+			test -n "$left" && lc0=$(echo "$left" | wc -l)
+			test -n "$right" && rc0=$(echo "$right" | wc -l)
+
+			if (( $summary_limit < 0 ))
+			then
+				lc=$lc0
+				rc=$rc0
+			elif (( $lc0 < $summary_limit ))
+			then
+				lc=$lc0
+				rc=$(($summary_limit-$lc))
+			else
+				lc=$summary_limit
+				rc=1
+			fi
+
+			if (( $rc > $rc0 ))
+			then
+				rc=$rc0
+			fi
+
+			if test -n "$left"
+			then
+				skip=$(($lc0-$lc))
+				echo "$left" | head -$(($lc-1))
+				test $skip != 0 && echo "  <... ($skip more)"
+				echo "$left" | tail -1
+			fi
+
+			if test -n "$right"
+			then
+				skip=$(($rc0-$rc))
+				echo "$right" | head -$(($rc-1))
+				test $skip != 0 && echo "  >... ($skip more)"
+				echo "$right" | tail -1
+			fi
 		fi
 		echo
 	done | sed -e 's/^/# /'
-- 
1.5.4.3.347.g5314c


  reply	other threads:[~2008-02-29 18:05 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-29 17:34 [PATCH v2 0/3] git-submodule: New subcommand 'summary' Ping Yin
2008-02-29 17:34 ` [PATCH v2 1/3] git-submodule: New subcommand 'summary' (1) - code framework Ping Yin
2008-02-29 17:34   ` [PATCH v2 2/3] git-submodule: New subcommand 'summary' (2) - hard work Ping Yin
2008-02-29 17:34     ` Ping Yin [this message]
2008-03-01  7:29       ` [PATCH v2 3/3] git-submodule: New subcommand 'summary' (3) - limit summary size Junio C Hamano
     [not found]         ` <46dff0320803010216m1bd20674if82d2d2072858290@mail.gmail.com>
2008-03-01 10:29           ` Ping Yin
2008-03-01 12:42         ` Ping Yin
2008-03-01 20:26           ` Junio C Hamano
2008-03-01  7:29     ` [PATCH v2 2/3] git-submodule: New subcommand 'summary' (2) - hard work Junio C Hamano
2008-03-01 11:04       ` Ping Yin
2008-03-07 16:50       ` Ping Yin
2008-03-07 16:59         ` Jakub Narebski
2008-03-07 18:23           ` Ping Yin
2008-03-07 18:46         ` Junio C Hamano
2008-03-01  7:28   ` [PATCH v2 1/3] git-submodule: New subcommand 'summary' (1) - code framework Junio C Hamano
2008-03-01 10:27     ` Ping Yin
2008-03-01 20:52       ` Junio C Hamano
2008-03-02  2:16         ` Junio C Hamano
2008-03-02  5:11         ` Ping Yin
     [not found]     ` <46dff0320803010201q72a72et951e0a3f090684e4@mail.gmail.com>
2008-03-01 10:28       ` Ping Yin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=18af168b52a735c33612c9c9e4778d8b8bef1cbc.1204306070.git.pkufranky@gmail.com \
    --to=pkufranky@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).