fast-import: count --max-pack-size in bytes
Similar in spirit to 07cf0f2
(make --max-pack-size argument to 'git
pack-object' count in bytes, 2010-02-03) which made the option by the same
name to pack-objects, this counts the pack size limit in bytes.
In order not to cause havoc with people used to the previous megabyte
scale an integer smaller than 8192 is interpreted in megabytes but the
user gets a warning. Also a minimum size of 1 MiB is enforced to avoid an
explosion of pack files.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Acked-by: Nicolas Pitre <nico@fluxnic.net>
This commit is contained in:
@ -46,10 +46,10 @@ Notes on behaviour change
|
|||||||
environment, and diff.*.command and diff.*.textconv in the config
|
environment, and diff.*.command and diff.*.textconv in the config
|
||||||
file.
|
file.
|
||||||
|
|
||||||
* The --max-pack-size argument to 'git repack' and 'git pack-objects' was
|
* The --max-pack-size argument to 'git repack', 'git pack-objects', and
|
||||||
assuming the provided size to be expressed in MiB, unlike the
|
'git fast-import' was assuming the provided size to be expressed in MiB,
|
||||||
corresponding config variable and other similar options accepting a size
|
unlike the corresponding config variable and other similar options accepting
|
||||||
value. It is now expecting a size expressed in bytes, with a possible
|
a size value. It is now expecting a size expressed in bytes, with a possible
|
||||||
unit suffix of 'k', 'm', or 'g'.
|
unit suffix of 'k', 'm', or 'g'.
|
||||||
|
|
||||||
Updates since v1.6.6
|
Updates since v1.6.6
|
||||||
|
@ -44,8 +44,8 @@ OPTIONS
|
|||||||
not contain the old commit).
|
not contain the old commit).
|
||||||
|
|
||||||
--max-pack-size=<n>::
|
--max-pack-size=<n>::
|
||||||
Maximum size of each output packfile, expressed in MiB.
|
Maximum size of each output packfile.
|
||||||
The default is 4096 (4 GiB) as that is the maximum allowed
|
The default is 4 GiB as that is the maximum allowed
|
||||||
packfile size (due to file format limitations). Some
|
packfile size (due to file format limitations). Some
|
||||||
importers may wish to lower this, such as to ensure the
|
importers may wish to lower this, such as to ensure the
|
||||||
resulting packfiles fit on CDs.
|
resulting packfiles fit on CDs.
|
||||||
|
@ -2764,11 +2764,6 @@ static void option_date_format(const char *fmt)
|
|||||||
die("unknown --date-format argument %s", fmt);
|
die("unknown --date-format argument %s", fmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void option_max_pack_size(const char *packsize)
|
|
||||||
{
|
|
||||||
max_packsize = strtoumax(packsize, NULL, 0) * 1024 * 1024;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void option_depth(const char *depth)
|
static void option_depth(const char *depth)
|
||||||
{
|
{
|
||||||
max_depth = strtoul(depth, NULL, 0);
|
max_depth = strtoul(depth, NULL, 0);
|
||||||
@ -2798,7 +2793,17 @@ static void option_export_pack_edges(const char *edges)
|
|||||||
static int parse_one_option(const char *option)
|
static int parse_one_option(const char *option)
|
||||||
{
|
{
|
||||||
if (!prefixcmp(option, "max-pack-size=")) {
|
if (!prefixcmp(option, "max-pack-size=")) {
|
||||||
option_max_pack_size(option + 14);
|
unsigned long v;
|
||||||
|
if (!git_parse_ulong(option + 14, &v))
|
||||||
|
return 0;
|
||||||
|
if (v < 8192) {
|
||||||
|
warning("max-pack-size is now in bytes, assuming --max-pack-size=%lum", v);
|
||||||
|
v *= 1024 * 1024;
|
||||||
|
} else if (v < 1024 * 1024) {
|
||||||
|
warning("minimum max-pack-size is 1 MiB");
|
||||||
|
v = 1024 * 1024;
|
||||||
|
}
|
||||||
|
max_packsize = v;
|
||||||
} else if (!prefixcmp(option, "big-file-threshold=")) {
|
} else if (!prefixcmp(option, "big-file-threshold=")) {
|
||||||
unsigned long v;
|
unsigned long v;
|
||||||
if (!git_parse_ulong(option + 19, &v))
|
if (!git_parse_ulong(option + 19, &v))
|
||||||
|
Reference in New Issue
Block a user