Allow users to be more selective over which refs to pack by adding an
--include option to git-pack-refs.
The existing options allow some measure of selectivity. By default
git-pack-refs packs all tags. --all can be used to include all refs,
and the previous commit added the ability to exclude certain refs with
--exclude.
While these knobs give the user some selection over which refs to pack,
it could be useful to give more control. For instance, a repository may
have a set of branches that are rarely updated and would benefit from
being packed. --include would allow the user to easily include a set of
branches to be packed while leaving everything else unpacked.
Signed-off-by: John Cai <johncai86@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
John Cai committedMay 12, 2023 at 21:34 UTC4fe42f326e10a547dc65dfe9e5ceaeeee02b98db
6 files changed+67-12
Documentation/git-pack-refs.txt
+13-1
index 546aa122df..284956acb3 100644--- a/Documentation/git-pack-refs.txt+++ b/Documentation/git-pack-refs.txt@@ -8,7 +8,7 @@ git-pack-refs - Pack heads and tags for efficient repository access SYNOPSIS -------- [verse]-'git pack-refs' [--all] [--no-prune] [--exclude <pattern>]+'git pack-refs' [--all] [--no-prune] [--include <pattern>] [--exclude <pattern>] DESCRIPTION -----------@@ -60,6 +60,15 @@ with many branches of historical interests. The command usually removes loose refs under `$GIT_DIR/refs` hierarchy after packing them. This option tells it not to.+--include <pattern>::++Pack refs based on a `glob(7)` pattern. Repetitions of this option+accumulate inclusion patterns. If a ref is both included in `--include` and+`--exclude`, `--exclude` takes precedence. Using `--include` will preclude all+tags from being included by default. Symbolic refs and broken refs will never+be packed. When used with `--all`, it will be a noop. Use `--no-include` to clear+and reset the list of patterns.+ --exclude <pattern>:: Do not pack refs matching the given `glob(7)` pattern. Repetitions of this option@@ -70,6 +79,9 @@ unpack it. When used with `--all`, pack only loose refs which do not match any of the provided `--exclude` patterns.+When used with `--include`, refs provided to `--include`, minus refs that are+provided to `--exclude` will be packed.+ BUGS ----