# gc docs: git gc --keep-base-pack ?

5 messages from 2020-08-06 to 2020-11-23. Participants: Luc Van Oostenryck, Ævar Arnfjörð Bjarmason, Junio C Hamano.
Thread: https://gitlist.dev/t/54004

## Luc Van Oostenryck, 2020-08-06 21:49

Subject: gc docs: git gc --keep-base-pack ?
Message-ID: <20200806214929.22qgjg3o2noosjuo@ltop.local>
URL: https://gitlist.dev/e/20200806214929.22qgjg3o2noosjuo%40ltop.local

```
Hi,

In git-gc.1, in the part describing gc.bigPackThreshold
there is two references to an option '--keep-base-pack'
but there is no such option (and it doesn't seem to
correspond to '--keep-largest-pack').

Regards,
-- Luc

```

## Ævar Arnfjörð Bjarmason, 2020-11-20 11:55

Subject: [PATCH 1/2] gc docs: change --keep-base-pack to --keep-largest-pack
Message-ID: <20201120115522.23617-1-avarab@gmail.com>
URL: https://gitlist.dev/e/20201120115522.23617-1-avarab%40gmail.com
In-Reply-To: <20200806214929.22qgjg3o2noosjuo@ltop.local>

```
The --keep-base-pack option never existed in git.git. It was the name
for the --keep-largest-pack option in earlier revisions of that series
before it landed as ae4e89e549 ("gc: add --keep-largest-pack option",
2018-04-15).

The later patches in that series[1][2] weren't changed to also refer
to --keep-largest-pack, so we've had this reference to a nonexisting
option ever since the feature initially landed.

1. 55dfe13df9 ("gc: add gc.bigPackThreshold config", 2018-04-15)

2. 9806f5a7bf ("gc --auto: exclude base pack if not enough mem to
   "repack -ad"", 2018-04-15)

Reported-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 Documentation/config/gc.txt | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/Documentation/config/gc.txt b/Documentation/config/gc.txt
index 00ea0a678e..c834e07991 100644
--- a/Documentation/config/gc.txt
+++ b/Documentation/config/gc.txt
@@ -44,9 +44,9 @@ gc.autoDetach::
 
 gc.bigPackThreshold::
 	If non-zero, all packs larger than this limit are kept when
-	`git gc` is run. This is very similar to `--keep-base-pack`
+	`git gc` is run. This is very similar to `--keep-largest-pack`
 	except that all packs that meet the threshold are kept, not
-	just the base pack. Defaults to zero. Common unit suffixes of
+	just the largest pack. Defaults to zero. Common unit suffixes of
 	'k', 'm', or 'g' are supported.
 +
 Note that if the number of kept packs is more than gc.autoPackLimit,
@@ -57,7 +57,7 @@ gc.autoPackLimit and gc.bigPackThreshold should be respected again.
 If the amount of memory estimated for `git repack` to run smoothly is
 not available and `gc.bigPackThreshold` is not set, the largest pack
 will also be excluded (this is the equivalent of running `git gc` with
-`--keep-base-pack`).
+`--keep-largest-pack`).
 
 gc.writeCommitGraph::
 	If true, then gc will rewrite the commit-graph file when
-- 
2.29.2.222.g5d2a92d10f8


```

## Ævar Arnfjörð Bjarmason, 2020-11-20 11:55

Subject: [PATCH 2/2] gc: rename keep_base_pack variable for --keep-largest-pack
Message-ID: <20201120115522.23617-2-avarab@gmail.com>
URL: https://gitlist.dev/e/20201120115522.23617-2-avarab%40gmail.com
In-Reply-To: <20200806214929.22qgjg3o2noosjuo@ltop.local>

```
As noted in an earlier change the keep_base_pack variable name is a
relic from an earlier on-list version of ae4e89e549 ("gc: add
--keep-largest-pack option", 2018-04-15) before it was renamed to
--keep-largest-pack.

Let's change the variable name to avoid that confusion, it's easier to
read the code if there's a 1=1 mapping between the variable name and
option name.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 builtin/gc.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/builtin/gc.c b/builtin/gc.c
index 5cd2a43f9f..07c15e4b64 100644
--- a/builtin/gc.c
+++ b/builtin/gc.c
@@ -533,7 +533,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
 	const char *name;
 	pid_t pid;
 	int daemonized = 0;
-	int keep_base_pack = -1;
+	int keep_largest_pack = -1;
 	timestamp_t dummy;
 
 	struct option builtin_gc_options[] = {
@@ -547,7 +547,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
 		OPT_BOOL_F(0, "force", &force,
 			   N_("force running gc even if there may be another gc running"),
 			   PARSE_OPT_NOCOMPLETE),
-		OPT_BOOL(0, "keep-largest-pack", &keep_base_pack,
+		OPT_BOOL(0, "keep-largest-pack", &keep_largest_pack,
 			 N_("repack all other packs except the largest pack")),
 		OPT_END()
 	};
@@ -624,8 +624,8 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
 	} else {
 		struct string_list keep_pack = STRING_LIST_INIT_NODUP;
 
-		if (keep_base_pack != -1) {
-			if (keep_base_pack)
+		if (keep_largest_pack != -1) {
+			if (keep_largest_pack)
 				find_base_packs(&keep_pack, 0);
 		} else if (big_pack_threshold) {
 			find_base_packs(&keep_pack, big_pack_threshold);
-- 
2.29.2.222.g5d2a92d10f8


```

## Junio C Hamano, 2020-11-21 19:43

Subject: Re: [PATCH 1/2] gc docs: change --keep-base-pack to --keep-largest-pack
Message-ID: <xmqqtutisdfk.fsf@gitster.c.googlers.com>
URL: https://gitlist.dev/e/xmqqtutisdfk.fsf%40gitster.c.googlers.com
In-Reply-To: <20201120115522.23617-1-avarab@gmail.com>

```
Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:

> The --keep-base-pack option never existed in git.git. It was the name
> for the --keep-largest-pack option in earlier revisions of that series
> before it landed as ae4e89e549 ("gc: add --keep-largest-pack option",
> 2018-04-15).

Is it a sign that this hasn't been used by or useful to our users
that this documentation bug did not get noticed by anybody for the
past 30 months, I wonder.

"git gc -h" does report the option with correct name, which is the
beauty of automation ;-)

Thanks, both.  Will queue, together with [2/2] which also makes
sense.

```

## Ævar Arnfjörð Bjarmason, 2020-11-23 10:18

Subject: Re: [PATCH 1/2] gc docs: change --keep-base-pack to --keep-largest-pack
Message-ID: <87h7pgpea2.fsf@evledraar.gmail.com>
URL: https://gitlist.dev/e/87h7pgpea2.fsf%40evledraar.gmail.com
In-Reply-To: <xmqqtutisdfk.fsf@gitster.c.googlers.com>

```

On Sat, Nov 21 2020, Junio C Hamano wrote:

> Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:
>
>> The --keep-base-pack option never existed in git.git. It was the name
>> for the --keep-largest-pack option in earlier revisions of that series
>> before it landed as ae4e89e549 ("gc: add --keep-largest-pack option",
>> 2018-04-15).
>
> Is it a sign that this hasn't been used by or useful to our users
> that this documentation bug did not get noticed by anybody for the
> past 30 months, I wonder.

FWIW I used it in a major git deployment since before it landed on
"master" as gc.bigPackThreshold, but not the CLI option. 

I think a lot of these CLI options for gc/repack are relatively unused
compared to the config, but it's still arguably useful to have them for
one-off testing (although you could also just use "git -c ...").

> "git gc -h" does report the option with correct name, which is the
> beauty of automation ;-)
>
> Thanks, both.  Will queue, together with [2/2] which also makes
> sense.


```
