config: provide access to the current line number
Users are nowadays trained to see message from CLI tools in the form <file>:<lno>: … To be able to give such messages when notifying the user about configurations in any config file, it is currently only possible to get the file name (if the value originates from a file to begin with) via `current_config_name()`. Now it is also possible to query the current line number for the configuration. Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
923d4a5ca4
commit
f2a2327a4a
8
config.c
8
config.c
@ -3338,6 +3338,14 @@ enum config_scope current_config_scope(void)
|
|||||||
return current_parsing_scope;
|
return current_parsing_scope;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int current_config_line(void)
|
||||||
|
{
|
||||||
|
if (current_config_kvi)
|
||||||
|
return current_config_kvi->linenr;
|
||||||
|
else
|
||||||
|
return cf->linenr;
|
||||||
|
}
|
||||||
|
|
||||||
int lookup_config(const char **mapping, int nr_mapping, const char *var)
|
int lookup_config(const char **mapping, int nr_mapping, const char *var)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
1
config.h
1
config.h
@ -309,6 +309,7 @@ int git_config_parse_parameter(const char *, config_fn_t fn, void *data);
|
|||||||
enum config_scope current_config_scope(void);
|
enum config_scope current_config_scope(void);
|
||||||
const char *current_config_origin_type(void);
|
const char *current_config_origin_type(void);
|
||||||
const char *current_config_name(void);
|
const char *current_config_name(void);
|
||||||
|
int current_config_line(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Include Directives
|
* Include Directives
|
||||||
|
@ -48,6 +48,7 @@ static int iterate_cb(const char *var, const char *value, void *data)
|
|||||||
printf("value=%s\n", value ? value : "(null)");
|
printf("value=%s\n", value ? value : "(null)");
|
||||||
printf("origin=%s\n", current_config_origin_type());
|
printf("origin=%s\n", current_config_origin_type());
|
||||||
printf("name=%s\n", current_config_name());
|
printf("name=%s\n", current_config_name());
|
||||||
|
printf("lno=%d\n", current_config_line());
|
||||||
printf("scope=%s\n", config_scope_name(current_config_scope()));
|
printf("scope=%s\n", config_scope_name(current_config_scope()));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -238,8 +238,8 @@ test_expect_success 'error on modifying repo config without repo' '
|
|||||||
|
|
||||||
cmdline_config="'foo.bar=from-cmdline'"
|
cmdline_config="'foo.bar=from-cmdline'"
|
||||||
test_expect_success 'iteration shows correct origins' '
|
test_expect_success 'iteration shows correct origins' '
|
||||||
echo "[foo]bar = from-repo" >.git/config &&
|
printf "[ignore]\n\tthis = please\n[foo]bar = from-repo\n" >.git/config &&
|
||||||
echo "[foo]bar = from-home" >.gitconfig &&
|
printf "[foo]\n\tbar = from-home\n" >.gitconfig &&
|
||||||
if test_have_prereq MINGW
|
if test_have_prereq MINGW
|
||||||
then
|
then
|
||||||
# Use Windows path (i.e. *not* $HOME)
|
# Use Windows path (i.e. *not* $HOME)
|
||||||
@ -253,18 +253,28 @@ test_expect_success 'iteration shows correct origins' '
|
|||||||
value=from-home
|
value=from-home
|
||||||
origin=file
|
origin=file
|
||||||
name=$HOME_GITCONFIG
|
name=$HOME_GITCONFIG
|
||||||
|
lno=2
|
||||||
scope=global
|
scope=global
|
||||||
|
|
||||||
|
key=ignore.this
|
||||||
|
value=please
|
||||||
|
origin=file
|
||||||
|
name=.git/config
|
||||||
|
lno=2
|
||||||
|
scope=local
|
||||||
|
|
||||||
key=foo.bar
|
key=foo.bar
|
||||||
value=from-repo
|
value=from-repo
|
||||||
origin=file
|
origin=file
|
||||||
name=.git/config
|
name=.git/config
|
||||||
|
lno=3
|
||||||
scope=local
|
scope=local
|
||||||
|
|
||||||
key=foo.bar
|
key=foo.bar
|
||||||
value=from-cmdline
|
value=from-cmdline
|
||||||
origin=command line
|
origin=command line
|
||||||
name=
|
name=
|
||||||
|
lno=-1
|
||||||
scope=command
|
scope=command
|
||||||
EOF
|
EOF
|
||||||
GIT_CONFIG_PARAMETERS=$cmdline_config test-tool config iterate >actual &&
|
GIT_CONFIG_PARAMETERS=$cmdline_config test-tool config iterate >actual &&
|
||||||
|
Loading…
x
Reference in New Issue
Block a user