Browse Source

git-submodule summary: limit summary size

This patch teaches git-submodule an option '--summary-limit|-n <number>'
to limit number of commits in total for the summary of each submodule in
the modified case (only a single commit is shown in other cases).

Giving 0 will disable the summary; a negative number means unlimted, which
is the default.

Signed-off-by: Ping Yin <pkufranky@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Ping Yin 17 years ago committed by Junio C Hamano
parent
commit
f2dc06a344
  1. 21
      git-submodule.sh

21
git-submodule.sh

@ -4,7 +4,9 @@
# #
# Copyright (c) 2007 Lars Hjemli # 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= OPTIONS_SPEC=
. git-sh-setup . git-sh-setup
require_work_tree require_work_tree
@ -329,6 +331,8 @@ set_name_rev () {
# $@ = [commit (default 'HEAD'),] requested paths (default all) # $@ = [commit (default 'HEAD'),] requested paths (default all)
# #
cmd_summary() { cmd_summary() {
summary_limit=-1

# parse $args after "submodule ... summary". # parse $args after "submodule ... summary".
while test $# -ne 0 while test $# -ne 0
do do
@ -336,6 +340,15 @@ cmd_summary() {
--cached) --cached)
cached="$1" cached="$1"
;; ;;
-n|--summary-limit)
if summary_limit=$(($2 + 0)) 2>/dev/null && test "$summary_limit" = "$2"
then
:
else
usage
fi
shift
;;
--) --)
shift shift
break break
@ -350,6 +363,8 @@ cmd_summary() {
shift shift
done done


test $summary_limit = 0 && return

if rev=$(git rev-parse --verify "$1^0" 2>/dev/null) if rev=$(git rev-parse --verify "$1^0" 2>/dev/null)
then then
head=$rev head=$rev
@ -458,8 +473,10 @@ cmd_summary() {
else else
if test $mod_src = 160000 -a $mod_dst = 160000 if test $mod_src = 160000 -a $mod_dst = 160000
then then
limit=
test $summary_limit -gt 0 && limit="-$summary_limit"
GIT_DIR="$name/.git" \ GIT_DIR="$name/.git" \
git log --pretty='format: %m %s' \ git log $limit --pretty='format: %m %s' \
--first-parent $sha1_src...$sha1_dst --first-parent $sha1_src...$sha1_dst
elif test $mod_dst = 160000 elif test $mod_dst = 160000
then then

Loading…
Cancel
Save