Browse Source

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>
maint
Shawn O. Pearce 18 years ago committed by Junio C Hamano
parent
commit
d77a64d353
  1. 5
      Documentation/git-repo-config.txt
  2. 6
      config.c
  3. 10
      t/t1300-repo-config.sh

5
Documentation/git-repo-config.txt

@ -87,7 +87,10 @@ OPTIONS @@ -87,7 +87,10 @@ OPTIONS
git-repo-config will ensure that the output is "true" or "false"

--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

6
config.c

@ -238,6 +238,12 @@ int git_config_int(const char *name, const char *value) @@ -238,6 +238,12 @@ int git_config_int(const char *name, const char *value)
int val = strtol(value, &end, 0);
if (!*end)
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);
}

10
t/t1300-repo-config.sh

@ -391,5 +391,15 @@ EOF @@ -391,5 +391,15 @@ EOF

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


Loading…
Cancel
Save