Re: pack.packSizeLimit, safety checks
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:48:10
Nicolas Pitre [off-list ref] writes:
Thing is... I don't know if the --max-pack-size argument is really that used. I'd expect people relying on that feature to use the config variable instead,...
I suspect one of us need to be careful not to forget this thing... -- >8 -- Subject: pack-objects --max-pack-size=<n> counts in bytes The --window-memory argument and pack.packsizelimit configuration used by the same program counted in bytes and honored the standard k/m/g suffixes. Make this option do the same for consistency. Signed-off-by: Junio C Hamano <redacted> --- Documentation/RelNotes-1.7.0.txt | 6 ++++++ Documentation/git-pack-objects.txt | 3 ++- builtin-pack-objects.c | 7 +++---- 3 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/Documentation/RelNotes-1.7.0.txt b/Documentation/RelNotes-1.7.0.txt
index 323ae54..adf8824 100644
--- a/Documentation/RelNotes-1.7.0.txt
+++ b/Documentation/RelNotes-1.7.0.txt@@ -46,6 +46,12 @@ Notes on behaviour change environment, and diff.*.command and diff.*.textconv in the config file. + * "git pack-objects --max-pack-size=<n>" used to count in megabytes, + which was inconsistent with its corresponding configuration + variable and other options the command takes. Now it counts in bytes + and allows standard k/m/g suffixes to be given. + + Updates since v1.6.6 --------------------
diff --git a/Documentation/git-pack-objects.txt b/Documentation/git-pack-objects.txt
index 097a147..fdaf775 100644
--- a/Documentation/git-pack-objects.txt
+++ b/Documentation/git-pack-objects.txt@@ -106,7 +106,8 @@ base-name:: default. --max-pack-size=<n>:: - Maximum size of each output packfile, expressed in MiB. + Maximum size of each output packfile, expressed in bytes. The + size can be suffixed with "k", "m", or "g". If specified, multiple packfiles may be created. The default is unlimited, unless the config variable `pack.packSizeLimit` is set.
diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c
index 4a41547..33e11d7 100644
--- a/builtin-pack-objects.c
+++ b/builtin-pack-objects.c@@ -2203,11 +2203,10 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix) continue; } if (!prefixcmp(arg, "--max-pack-size=")) { - char *end; - pack_size_limit_cfg = 0; - pack_size_limit = strtoul(arg+16, &end, 0) * 1024 * 1024; - if (!arg[16] || *end) + unsigned long ul = 0; + if (!git_parse_ulong(arg + 16, &ul)) usage(pack_usage); + pack_size_limit_cfg = ul; continue; } if (!prefixcmp(arg, "--window=")) {