Code

Submodules: Add the new "ignore" config option for diff and status
authorJens Lehmann <Jens.Lehmann@web.de>
Thu, 5 Aug 2010 22:39:25 +0000 (00:39 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 9 Aug 2010 16:01:52 +0000 (09:01 -0700)
commitaee9c7d6540fe6f66fbbe7be420caa26ae0fa2d9
tree848391891b4866c4c34f521658b66487a9768f9a
parent64fdc08dac6694d1e754580e7acb82dfa4988bb9
Submodules: Add the new "ignore" config option for diff and status

The new "ignore" config option controls the default behavior for "git
status" and the diff family. It specifies under what circumstances they
consider submodules as modified and can be set separately for each
submodule.

The command line option "--ignore-submodules=" has been extended to accept
the new parameter "none" for both status and diff.

Users that chose submodules to get rid of long work tree scanning times
might want to set the "dirty" option for those submodules. This brings
back the pre 1.7.0 behavior, where submodule work trees were never
scanned for modifications. By using "--ignore-submodules=none" on the
command line the status and diff commands can be told to do a full scan.

This option can be set to the following values (which have the same name
and meaning as for the "--ignore-submodules" option of status and diff):

"all": All changes to the submodule will be ignored.

"dirty": Only differences of the commit recorded in the superproject and
the submodules HEAD will be considered modifications, all changes
to the work tree of the submodule will be ignored. When using this
value, the submodule will not be scanned for work tree changes at
all, leading to a performance benefit on large submodules.

"untracked": Only untracked files in the submodules work tree are ignored,
a changed HEAD and/or modified files in the submodule will mark it
as modified.

"none" (which is the default): Either untracked or modified files in a
submodules work tree or a difference between the subdmodules HEAD
and the commit recorded in the superproject will make it show up
as changed. This value is added as a new parameter for the
"--ignore-submodules" option of the diff family and "git status"
so the user can override the settings in the configuration.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config.txt
Documentation/diff-options.txt
Documentation/git-status.txt
diff-lib.c
diff.c
diff.h
submodule.c
submodule.h
t/t4027-diff-submodule.sh
t/t7508-status.sh
wt-status.c