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] init [--] [<path>...]
|
||||||
'git submodule' [--quiet] update [--init] [-N|--no-fetch] [--rebase]
|
'git submodule' [--quiet] update [--init] [-N|--no-fetch] [--rebase]
|
||||||
[--reference <repository>] [--merge] [--] [<path>...]
|
[--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] foreach <command>
|
||||||
'git submodule' [--quiet] sync [--] [<path>...]
|
'git submodule' [--quiet] sync [--] [<path>...]
|
||||||
|
|
||||||
@ -127,7 +127,11 @@ summary::
|
|||||||
Show commit summary between the given commit (defaults to HEAD) and
|
Show commit summary between the given commit (defaults to HEAD) and
|
||||||
working tree/index. For a submodule in question, a series of commits
|
working tree/index. For a submodule in question, a series of commits
|
||||||
in the submodule between the given super project commit and the
|
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::
|
foreach::
|
||||||
Evaluates an arbitrary shell command in each checked out submodule.
|
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
|
commands typically use the commit found in the submodule HEAD, but
|
||||||
with this option, the commit stored in the index is used instead.
|
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::
|
-n::
|
||||||
--summary-limit::
|
--summary-limit::
|
||||||
This option is only valid for the summary command.
|
This option is only valid for the summary command.
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2007 Lars Hjemli
|
# 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>]] \
|
[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>...]]"
|
[--] [<path>...]|[foreach <command>]|[sync [--] [<path>...]]"
|
||||||
OPTIONS_SPEC=
|
OPTIONS_SPEC=
|
||||||
@ -16,6 +16,7 @@ command=
|
|||||||
branch=
|
branch=
|
||||||
reference=
|
reference=
|
||||||
cached=
|
cached=
|
||||||
|
files=
|
||||||
nofetch=
|
nofetch=
|
||||||
update=
|
update=
|
||||||
|
|
||||||
@ -460,6 +461,7 @@ set_name_rev () {
|
|||||||
cmd_summary() {
|
cmd_summary() {
|
||||||
summary_limit=-1
|
summary_limit=-1
|
||||||
for_status=
|
for_status=
|
||||||
|
diff_cmd=diff-index
|
||||||
|
|
||||||
# parse $args after "submodule ... summary".
|
# parse $args after "submodule ... summary".
|
||||||
while test $# -ne 0
|
while test $# -ne 0
|
||||||
@ -468,6 +470,9 @@ cmd_summary() {
|
|||||||
--cached)
|
--cached)
|
||||||
cached="$1"
|
cached="$1"
|
||||||
;;
|
;;
|
||||||
|
--files)
|
||||||
|
files="$1"
|
||||||
|
;;
|
||||||
--for-status)
|
--for-status)
|
||||||
for_status="$1"
|
for_status="$1"
|
||||||
;;
|
;;
|
||||||
@ -504,9 +509,17 @@ cmd_summary() {
|
|||||||
head=HEAD
|
head=HEAD
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -n "$files" ]
|
||||||
|
then
|
||||||
|
test -n "$cached" &&
|
||||||
|
die "--cached cannot be used with --files"
|
||||||
|
diff_cmd=diff-files
|
||||||
|
head=
|
||||||
|
fi
|
||||||
|
|
||||||
cd_to_toplevel
|
cd_to_toplevel
|
||||||
# Get modified modules cared by user
|
# Get modified modules cared by user
|
||||||
modules=$(git diff-index $cached --raw $head -- "$@" |
|
modules=$(git $diff_cmd $cached --raw $head -- "$@" |
|
||||||
egrep '^:([0-7]* )?160000' |
|
egrep '^:([0-7]* )?160000' |
|
||||||
while read mod_src mod_dst sha1_src sha1_dst status name
|
while read mod_src mod_dst sha1_src sha1_dst status name
|
||||||
do
|
do
|
||||||
@ -520,7 +533,7 @@ cmd_summary() {
|
|||||||
|
|
||||||
test -z "$modules" && return
|
test -z "$modules" && return
|
||||||
|
|
||||||
git diff-index $cached --raw $head -- $modules |
|
git $diff_cmd $cached --raw $head -- $modules |
|
||||||
egrep '^:([0-7]* )?160000' |
|
egrep '^:([0-7]* )?160000' |
|
||||||
cut -c2- |
|
cut -c2- |
|
||||||
while read mod_src mod_dst sha1_src sha1_dst status name
|
while read mod_src mod_dst sha1_src sha1_dst status name
|
||||||
|
@ -56,6 +56,15 @@ test_expect_success 'modified submodule(forward)' "
|
|||||||
EOF
|
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 &&
|
commit_file sm1 &&
|
||||||
cd sm1 &&
|
cd sm1 &&
|
||||||
git reset --hard HEAD~2 >/dev/null &&
|
git reset --hard HEAD~2 >/dev/null &&
|
||||||
@ -114,6 +123,15 @@ test_expect_success 'typechanged submodule(submodule->blob), --cached' "
|
|||||||
EOF
|
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 &&
|
rm -rf sm1 &&
|
||||||
git checkout-index sm1
|
git checkout-index sm1
|
||||||
test_expect_success 'typechanged submodule(submodule->blob)' "
|
test_expect_success 'typechanged submodule(submodule->blob)' "
|
||||||
@ -205,4 +223,8 @@ test_expect_success '--for-status' "
|
|||||||
EOF
|
EOF
|
||||||
"
|
"
|
||||||
|
|
||||||
|
test_expect_success 'fail when using --files together with --cached' "
|
||||||
|
test_must_fail git submodule summary --files --cached
|
||||||
|
"
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
x
Reference in New Issue
Block a user