git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v3 3/4] git-submodule: New subcommand 'summary' (3) - limit summary size

From
Ping Yin <pkufranky@gmail.com>
Date
Mar 2, 2008, 18:15 UTC
Message-ID
<1204481710-29791-3-git-send-email-pkufranky@gmail.com>
In-Reply-To
<1204481710-29791-1-git-send-email-pkufranky@gmail.com>

This patch teaches git-submodule an option '--summary-limit|-n <number>' to limit number of commits in total for the summary. Number 0 will disable summary and minus number means unlimted (the default).

For beauty and clarification, the fork-point (i.e. the last commits for both backward and forward sections) will always be shown disregarding the given limit. So actual summary size may be greater than the given limit.

'git submodule summary -n 2 sm1' and 'git submodule summary -n 3 sm1' will show the same in the super project mentioned in last patch.

---------------------------------------
 $ git submodule summary -n 2 sm1
 # Submodules modifiled: sm1
 #
 # * sm1 354cd45...3f751e5:
 #   <one line message for C
 #   <one line message for B
 #   >...
 #   >one line message for E
 #
---------------------------------------
Signed-off-by: Ping Yin <pkufranky@gmail.com>
---
 git-submodule.sh |   65 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 62 insertions(+), 3 deletions(-)
diff --git a/git-submodule.sh b/git-submodule.sh
index 3313d6c..dfd2952 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 <n>] [<commit>]] \
+[--] [<path>...]"
 OPTIONS_SPEC=
 . git-sh-setup
 require_work_tree
@@ -329,6 +331,8 @@ set_name_rev () {
 # $@ = [commit (default 'HEAD'),] requested paths (default all)
 #
 cmd_summary() {
+	summary_limit=-1
+
 	# parse $args after "submodule ... summary".
 	while test $# -ne 0
 	do
@@ -336,6 +340,15 @@ cmd_summary() {
 		--cached)
 			cached="$1"
 			;;
+		-n|--summary-limit)
+			if summary_limit=$(($2 + 0)) 2>/dev/null && test "$summary_limit" = "$2"
+			then
+				:
+			else
+				usage
+			fi
+			shift
+			;;
 		--)
 			shift
 			break
@@ -350,6 +363,8 @@ cmd_summary() {
 		shift
 	done
 
+	test $summary_limit = 0 && return
+
 	if rev=$(git rev-parse --verify "$1^0" 2>/dev/null)
 	then
 		head=$rev
@@ -442,8 +457,52 @@ 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 test $summary_limit -lt 0
+			then
+				lc=$lc0
+				rc=$rc0
+			elif test $lc0 -lt $summary_limit
+			then
+				lc=$lc0
+				rc=$(($summary_limit-$lc))
+			else
+				lc=$summary_limit
+				rc=1
+			fi
+
+			if test $rc -gt $rc0
+			then
+				rc=$rc0
+			fi
+
+			if test -n "$left"
+			then
+				skip=$(($lc0-$lc))
+				echo "$left" | head -$(($lc-1))
+				case $skip in
+					0) : ;;
+					1) echo "  <..." ;;
+					*) echo "  <... ($skip more)" ;;
+				esac
+				echo "$left" | tail -1
+			fi
+
+			if test -n "$right"
+			then
+				skip=$(($rc0-$rc))
+				echo "$right" | head -$(($rc-1))
+				case $skip in
+					0) : ;;
+					1) echo "  <..." ;;
+					*) echo "  <... ($skip more)" ;;
+				esac
+				echo "$right" | tail -1
+			fi
 		fi
 		echo
 	done | sed -e 's/^/# /'
-- 
1.5.4.3.347.g5314c
Previous: Ping YinNext: Junio C Hamano
Message 9 of 13 in “git-submodule: New subcommand 'summary' (1) - code framework”
  1. 1/4 git-submodule: New subcommand 'summary' (1) - code frameworkPing Yin, Mar 2, 2008
  2. 2/4 git-submodule: New subcommand 'summary' (2) - show commit summaryPing Yin, Mar 2, 2008
  3. Junio C HamanoMar 5, 2008
  4. Ping YinMar 6, 2008
  5. Junio C HamanoMar 6, 2008
  6. Ping YinMar 6, 2008
  7. Junio C HamanoMar 6, 2008
  8. Ping YinMar 6, 2008
  9. 3/4 git-submodule: New subcommand 'summary' (3) - limit summary sizePing Yin, Mar 2, 2008
  10. Junio C HamanoMar 6, 2008
  11. Ping YinMar 6, 2008
  12. Ping YinMar 7, 2008
  13. 4/4 git-submodule: New subcommand 'summary' (4) - Update the documentPing Yin, Mar 2, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.