git submodule summary: add --files option
git submodule summary is providing similar functionality for submodules as git diff-index does for a git project (including the meaning of --cached). But the analogon to git diff-files is missing, so add a --files option to summarize the differences between the index of the super project and the last commit checked out in the working tree of the submodule. Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
6ffd781226
commit
1c244f6ee5
@ -15,7 +15,7 @@ SYNOPSIS
|
||||
'git submodule' [--quiet] init [--] [<path>...]
|
||||
'git submodule' [--quiet] update [--init] [-N|--no-fetch] [--rebase]
|
||||
[--reference <repository>] [--merge] [--] [<path>...]
|
||||
'git submodule' [--quiet] summary [--cached] [--summary-limit <n>] [commit] [--] [<path>...]
|
||||
'git submodule' [--quiet] summary [--cached|--files] [--summary-limit <n>] [commit] [--] [<path>...]
|
||||
'git submodule' [--quiet] foreach <command>
|
||||
'git submodule' [--quiet] sync [--] [<path>...]
|
||||
|
||||
@ -127,7 +127,11 @@ summary::
|
||||
Show commit summary between the given commit (defaults to HEAD) and
|
||||
working tree/index. For a submodule in question, a series of commits
|
||||
in the submodule between the given super project commit and the
|
||||
index or working tree (switched by --cached) are shown.
|
||||
index or working tree (switched by --cached) are shown. If the option
|
||||
--files is given, show the series of commits in the submodule between
|
||||
the index of super project the and the working tree of the submodule
|
||||
(this option doesn't allow to use the --cached option or to provide an
|
||||
explicit commit).
|
||||
|
||||
foreach::
|
||||
Evaluates an arbitrary shell command in each checked out submodule.
|
||||
@ -169,6 +173,11 @@ OPTIONS
|
||||
commands typically use the commit found in the submodule HEAD, but
|
||||
with this option, the commit stored in the index is used instead.
|
||||
|
||||
--files::
|
||||
This option is only valid for the summary command. This command
|
||||
compares the commit in the index with that in the submodule HEAD
|
||||
when this option is used.
|
||||
|
||||
-n::
|
||||
--summary-limit::
|
||||
This option is only valid for the summary command.
|
||||
|
@ -4,7 +4,7 @@
|
||||
#
|
||||
# Copyright (c) 2007 Lars Hjemli
|
||||
|
||||
USAGE="[--quiet] [--cached] \
|
||||
USAGE="[--quiet] [--cached|--files] \
|
||||
[add [-b branch] <repo> <path>]|[status|init|update [-i|--init] [-N|--no-fetch] [--rebase|--merge]|summary [-n|--summary-limit <n>] [<commit>]] \
|
||||
[--] [<path>...]|[foreach <command>]|[sync [--] [<path>...]]"
|
||||
OPTIONS_SPEC=
|
||||
@ -16,6 +16,7 @@ command=
|
||||
branch=
|
||||
reference=
|
||||
cached=
|
||||
files=
|
||||
nofetch=
|
||||
update=
|
||||
|
||||
@ -460,6 +461,7 @@ set_name_rev () {
|
||||
cmd_summary() {
|
||||
summary_limit=-1
|
||||
for_status=
|
||||
diff_cmd=diff-index
|
||||
|
||||
# parse $args after "submodule ... summary".
|
||||
while test $# -ne 0
|
||||
@ -468,6 +470,9 @@ cmd_summary() {
|
||||
--cached)
|
||||
cached="$1"
|
||||
;;
|
||||
--files)
|
||||
files="$1"
|
||||
;;
|
||||
--for-status)
|
||||
for_status="$1"
|
||||
;;
|
||||
@ -504,9 +509,17 @@ cmd_summary() {
|
||||
head=HEAD
|
||||
fi
|
||||
|
||||
if [ -n "$files" ]
|
||||
then
|
||||
test -n "$cached" &&
|
||||
die "--cached cannot be used with --files"
|
||||
diff_cmd=diff-files
|
||||
head=
|
||||
fi
|
||||
|
||||
cd_to_toplevel
|
||||
# Get modified modules cared by user
|
||||
modules=$(git diff-index $cached --raw $head -- "$@" |
|
||||
modules=$(git $diff_cmd $cached --raw $head -- "$@" |
|
||||
egrep '^:([0-7]* )?160000' |
|
||||
while read mod_src mod_dst sha1_src sha1_dst status name
|
||||
do
|
||||
@ -520,7 +533,7 @@ cmd_summary() {
|
||||
|
||||
test -z "$modules" && return
|
||||
|
||||
git diff-index $cached --raw $head -- $modules |
|
||||
git $diff_cmd $cached --raw $head -- $modules |
|
||||
egrep '^:([0-7]* )?160000' |
|
||||
cut -c2- |
|
||||
while read mod_src mod_dst sha1_src sha1_dst status name
|
||||
|
@ -56,6 +56,15 @@ test_expect_success 'modified submodule(forward)' "
|
||||
EOF
|
||||
"
|
||||
|
||||
test_expect_success 'modified submodule(forward), --files' "
|
||||
git submodule summary --files >actual &&
|
||||
diff actual - <<-EOF
|
||||
* sm1 $head1...$head2 (1):
|
||||
> Add foo3
|
||||
|
||||
EOF
|
||||
"
|
||||
|
||||
commit_file sm1 &&
|
||||
cd sm1 &&
|
||||
git reset --hard HEAD~2 >/dev/null &&
|
||||
@ -114,6 +123,15 @@ test_expect_success 'typechanged submodule(submodule->blob), --cached' "
|
||||
EOF
|
||||
"
|
||||
|
||||
test_expect_success 'typechanged submodule(submodule->blob), --files' "
|
||||
git submodule summary --files >actual &&
|
||||
diff actual - <<-EOF
|
||||
* sm1 $head5(blob)->$head4(submodule) (3):
|
||||
> Add foo5
|
||||
|
||||
EOF
|
||||
"
|
||||
|
||||
rm -rf sm1 &&
|
||||
git checkout-index sm1
|
||||
test_expect_success 'typechanged submodule(submodule->blob)' "
|
||||
@ -205,4 +223,8 @@ test_expect_success '--for-status' "
|
||||
EOF
|
||||
"
|
||||
|
||||
test_expect_success 'fail when using --files together with --cached' "
|
||||
test_must_fail git submodule summary --files --cached
|
||||
"
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user