Teach Git how to parse standard power of 2 suffixes.
Sometimes its necessary to supply a value as a power of two in a configuration parameter. In this case the user may want to use the standard suffixes such as K, M, or G to indicate that the numerical value should be multiplied by a constant base before being used. Shell scripts/etc. can also benefit from this automatic option parsing with `git repo-config --int`. [jc: with a couple of test and a slight input tightening] Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
95d3c4f546
commit
d77a64d353
@ -87,7 +87,10 @@ OPTIONS
|
|||||||
git-repo-config will ensure that the output is "true" or "false"
|
git-repo-config will ensure that the output is "true" or "false"
|
||||||
|
|
||||||
--int::
|
--int::
|
||||||
git-repo-config will ensure that the output is a simple decimal number
|
git-repo-config will ensure that the output is a simple
|
||||||
|
decimal number. An optional value suffix of 'k', 'm', or 'g'
|
||||||
|
in the config file will cause the value to be multiplied
|
||||||
|
by 1024, 1048576, or 1073741824 prior to output.
|
||||||
|
|
||||||
|
|
||||||
ENVIRONMENT
|
ENVIRONMENT
|
||||||
|
6
config.c
6
config.c
@ -238,6 +238,12 @@ int git_config_int(const char *name, const char *value)
|
|||||||
int val = strtol(value, &end, 0);
|
int val = strtol(value, &end, 0);
|
||||||
if (!*end)
|
if (!*end)
|
||||||
return val;
|
return val;
|
||||||
|
if (!strcasecmp(end, "k"))
|
||||||
|
return val * 1024;
|
||||||
|
if (!strcasecmp(end, "m"))
|
||||||
|
return val * 1024 * 1024;
|
||||||
|
if (!strcasecmp(end, "g"))
|
||||||
|
return val * 1024 * 1024 * 1024;
|
||||||
}
|
}
|
||||||
die("bad config value for '%s' in %s", name, config_file_name);
|
die("bad config value for '%s' in %s", name, config_file_name);
|
||||||
}
|
}
|
||||||
|
@ -391,5 +391,15 @@ EOF
|
|||||||
|
|
||||||
test_expect_success "rename succeeded" "diff -u expect .git/config"
|
test_expect_success "rename succeeded" "diff -u expect .git/config"
|
||||||
|
|
||||||
|
test_expect_success numbers '
|
||||||
|
|
||||||
|
git-repo-config kilo.gram 1k &&
|
||||||
|
git-repo-config mega.ton 1m &&
|
||||||
|
k=$(git-repo-config --int --get kilo.gram) &&
|
||||||
|
test z1024 = "z$k" &&
|
||||||
|
m=$(git-repo-config --int --get mega.ton) &&
|
||||||
|
test z1048576 = "z$m"
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user