diff options
author | Jens Lehmann <Jens.Lehmann@web.de> | 2010-08-06 00:40:48 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-08-09 09:11:44 -0700 |
commit | 302ad7a9930a34413418b6436f96826070367647 (patch) | |
tree | 5cd126308137179d75632405e3c084950d8c4e34 /submodule.c | |
parent | aee9c7d6540fe6f66fbbe7be420caa26ae0fa2d9 (diff) | |
download | git-302ad7a9930a34413418b6436f96826070367647.tar.gz |
Submodules: Use "ignore" settings from .gitmodules too for diff and status
The .gitmodules file is parsed for "submodule.<name>.ignore" entries
before looking for them in .git/config. Thus settings found in .git/config
will override those from .gitmodules, thereby allowing the local developer
to ignore settings given by the remote side while also letting upstream
set defaults for those users who don't have special needs.
Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'submodule.c')
-rw-r--r-- | submodule.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/submodule.c b/submodule.c index ff2863074b..dc0f95b73f 100644 --- a/submodule.c +++ b/submodule.c @@ -62,6 +62,25 @@ void set_diffopt_flags_from_submodule_config(struct diff_options *diffopt, } } +static int submodule_config(const char *var, const char *value, void *cb) +{ + if (!prefixcmp(var, "submodule.")) + return parse_submodule_config_option(var, value); + return 0; +} + +void gitmodules_config(void) +{ + const char *work_tree = get_git_work_tree(); + if (work_tree) { + struct strbuf gitmodules_path = STRBUF_INIT; + strbuf_addstr(&gitmodules_path, work_tree); + strbuf_addstr(&gitmodules_path, "/.gitmodules"); + git_config_from_file(submodule_config, gitmodules_path.buf, NULL); + strbuf_release(&gitmodules_path); + } +} + int parse_submodule_config_option(const char *var, const char *value) { int len; |