Git Mailing List Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH] builtin/repack.c: set a default factor for '--geometric'
@ 2021-04-20  1:47 Taylor Blau
  2021-04-20 12:39 ` Derrick Stolee
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Taylor Blau @ 2021-04-20  1:47 UTC (permalink / raw)
  To: git; +Cc: peff, dstolee, gitster

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

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 &&
-- 
2.31.1.163.ga65ce7f831

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] builtin/repack.c: set a default factor for '--geometric'
  2021-04-20  1:47 [PATCH] builtin/repack.c: set a default factor for '--geometric' Taylor Blau
@ 2021-04-20 12:39 ` Derrick Stolee
  2021-04-20 20:25 ` Junio C Hamano
  2021-04-20 20:32 ` [PATCH v2] " Taylor Blau
  2 siblings, 0 replies; 6+ messages in thread
From: Derrick Stolee @ 2021-04-20 12:39 UTC (permalink / raw)
  To: Taylor Blau, git; +Cc: peff, dstolee, gitster

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] builtin/repack.c: set a default factor for '--geometric'
  2021-04-20  1:47 [PATCH] builtin/repack.c: set a default factor for '--geometric' Taylor Blau
  2021-04-20 12:39 ` Derrick Stolee
@ 2021-04-20 20:25 ` Junio C Hamano
  2021-04-20 20:31   ` Taylor Blau
  2021-04-20 20:32 ` [PATCH v2] " Taylor Blau
  2 siblings, 1 reply; 6+ messages in thread
From: Junio C Hamano @ 2021-04-20 20:25 UTC (permalink / raw)
  To: Taylor Blau; +Cc: git, peff, dstolee

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?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] builtin/repack.c: set a default factor for '--geometric'
  2021-04-20 20:25 ` Junio C Hamano
@ 2021-04-20 20:31   ` Taylor Blau
  0 siblings, 0 replies; 6+ messages in thread
From: Taylor Blau @ 2021-04-20 20:31 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, peff, dstolee

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2] builtin/repack.c: set a default factor for '--geometric'
  2021-04-20  1:47 [PATCH] builtin/repack.c: set a default factor for '--geometric' Taylor Blau
  2021-04-20 12:39 ` Derrick Stolee
  2021-04-20 20:25 ` Junio C Hamano
@ 2021-04-20 20:32 ` Taylor Blau
  2021-04-20 21:44   ` Andreas Schwab
  2 siblings, 1 reply; 6+ messages in thread
From: Taylor Blau @ 2021-04-20 20:32 UTC (permalink / raw)
  To: git; +Cc: peff, dstolee, gitster

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>
---
Range-diff against v1:
1:  1ecab81739 ! 1:  8d8dea2e2c builtin/repack.c: set a default factor for '--geometric'
    @@ Documentation/git-repack.txt: depth is 4095.
      
     --g=<factor>::
     ---geometric=<factor>::
    -+-g=[<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
    + 	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.
    ++	next-largest pack. If `<factor>` is not specified, then `2` is
    ++	used by default.
      +
      `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

 Documentation/git-repack.txt | 7 ++++---
 builtin/repack.c             | 5 +++--
 t/t7703-repack-geometric.sh  | 2 +-
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/Documentation/git-repack.txt b/Documentation/git-repack.txt
index 317d63cf0d..f7c7e0aeae 100644
--- a/Documentation/git-repack.txt
+++ b/Documentation/git-repack.txt
@@ -165,11 +165,12 @@ 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.
+	next-largest pack. If `<factor>` is not specified, then `2` is
+	used by default.
 +
 `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 &&
-- 
2.31.1.163.ga65ce7f831

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] builtin/repack.c: set a default factor for '--geometric'
  2021-04-20 20:32 ` [PATCH v2] " Taylor Blau
@ 2021-04-20 21:44   ` Andreas Schwab
  0 siblings, 0 replies; 6+ messages in thread
From: Andreas Schwab @ 2021-04-20 21:44 UTC (permalink / raw)
  To: Taylor Blau; +Cc: git, peff, dstolee, gitster

On Apr 20 2021, Taylor Blau wrote:

> diff --git a/Documentation/git-repack.txt b/Documentation/git-repack.txt
> index 317d63cf0d..f7c7e0aeae 100644
> --- a/Documentation/git-repack.txt
> +++ b/Documentation/git-repack.txt
> @@ -165,11 +165,12 @@ 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.
> +	next-largest pack. If `<factor>` is not specified, then `2` is
> +	used by default.

I don't think the short option takes a '='.

$ ./git repack -g=2
error: switch `g' expects a numerical value

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, back to index

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-20  1:47 [PATCH] builtin/repack.c: set a default factor for '--geometric' Taylor Blau
2021-04-20 12:39 ` Derrick Stolee
2021-04-20 20:25 ` Junio C Hamano
2021-04-20 20:31   ` Taylor Blau
2021-04-20 20:32 ` [PATCH v2] " Taylor Blau
2021-04-20 21:44   ` Andreas Schwab

Git Mailing List Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/git/0 git/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 git git/ https://lore.kernel.org/git \
		git@vger.kernel.org
	public-inbox-index git

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.git


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git