Message ID | 1ecab817396fae6a1cbafde1ca8b3ebfd9ae4c11.1618883241.git.me@ttaylorr.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | builtin/repack.c: set a default factor for '--geometric' | expand |
On 4/19/2021 9:47 PM, Taylor Blau wrote: > The '--geometric=<n>' argument specifies that each pack must contain at > least 'n' times as many objects as the size of the next-largest pack. > The factor 'n' is customizable, but setting it to '2' is a sane default. > > Instead of making the factor a required argument, make the argument > optional with a default value of '2'. This flexibility is nice. > To ensure that the option is setup correctly, modify the most complex > test of t7703 to drop the explicit factor. Good testing. > --g=<factor>:: > ---geometric=<factor>:: > +-g=[<factor>]:: > +--geometric[=<factor>]:: > Arrange resulting pack structure so that each successive pack > - contains at least `<factor>` times the number of objects as the > - next-largest pack. > + contains at least `<factor>` (`2` if unspecified) times the > + number of objects as the next-largest pack. The parenthetical interrupts what `<factor>` means. Perhaps rearrange: Arrange resulting pack structure so that each successive pack contains at least `<factor>` times the number of objects as the next-largest pack. If `<factor>` is not specified, then `2` is used by default. Rest of the diff looks good. Thanks, -Stolee
Taylor Blau <me@ttaylorr.com> writes: > --g=<factor>:: > ---geometric=<factor>:: > +-g=[<factor>]:: > +--geometric[=<factor>]:: Do you mean "git repack -g= -d" is (1) accepted and/or (2) recommended? If not, we'd want "-g[=<factor>]" similar to the longer form, no?
On Tue, Apr 20, 2021 at 01:25:02PM -0700, Junio C Hamano wrote: > Taylor Blau <me@ttaylorr.com> writes: > > > --g=<factor>:: > > ---geometric=<factor>:: > > +-g=[<factor>]:: > > +--geometric[=<factor>]:: > > Do you mean "git repack -g= -d" is (1) accepted and/or (2) > recommended? > > If not, we'd want "-g[=<factor>]" similar to the longer form, no? Thanks for spotting. The '[' should come before the '=' character, not after. I'll send a reroll with this (and a suggestion from Stolee). Thanks, Taylor
diff --git a/Documentation/git-repack.txt b/Documentation/git-repack.txt index 317d63cf0d..d948a2913d 100644 --- a/Documentation/git-repack.txt +++ b/Documentation/git-repack.txt @@ -165,11 +165,11 @@ depth is 4095. Pass the `--delta-islands` option to `git-pack-objects`, see linkgit:git-pack-objects[1]. --g=<factor>:: ---geometric=<factor>:: +-g=[<factor>]:: +--geometric[=<factor>]:: Arrange resulting pack structure so that each successive pack - contains at least `<factor>` times the number of objects as the - next-largest pack. + contains at least `<factor>` (`2` if unspecified) times the + number of objects as the next-largest pack. + `git repack` ensures this by determining a "cut" of packfiles that need to be repacked into one in order to ensure a geometric progression. It diff --git a/builtin/repack.c b/builtin/repack.c index 2847fdfbab..f2359c9d3a 100644 --- a/builtin/repack.c +++ b/builtin/repack.c @@ -494,8 +494,9 @@ int cmd_repack(int argc, const char **argv, const char *prefix) N_("repack objects in packs marked with .keep")), OPT_STRING_LIST(0, "keep-pack", &keep_pack_list, N_("name"), N_("do not repack this pack")), - OPT_INTEGER('g', "geometric", &geometric_factor, - N_("find a geometric progression with factor <N>")), + { OPTION_INTEGER, 'g', "geometric", &geometric_factor, N_("n"), + N_("find a geometric progression with factor <n>"), + PARSE_OPT_OPTARG, NULL, 2 }, OPT_END() }; diff --git a/t/t7703-repack-geometric.sh b/t/t7703-repack-geometric.sh index 5ccaa440e0..77cd5f2284 100755 --- a/t/t7703-repack-geometric.sh +++ b/t/t7703-repack-geometric.sh @@ -123,7 +123,7 @@ test_expect_success '--geometric with small- and large-pack rollup' ' find $objdir/pack -name "*.pack" | sort >before && - git repack --geometric 2 -d && + git repack --geometric -d && find $objdir/pack -name "*.pack" | sort >after && comm -12 before after >untouched &&
The '--geometric=<n>' argument specifies that each pack must contain at least 'n' times as many objects as the size of the next-largest pack. The factor 'n' is customizable, but setting it to '2' is a sane default. Instead of making the factor a required argument, make the argument optional with a default value of '2'. To ensure that the option is setup correctly, modify the most complex test of t7703 to drop the explicit factor. Signed-off-by: Taylor Blau <me@ttaylorr.com> --- Documentation/git-repack.txt | 8 ++++---- builtin/repack.c | 5 +++-- t/t7703-repack-geometric.sh | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-)