Skip to content

Commit 03311dc

Browse files
committed
Merge branch 'tb/stdin-packs-excluded-but-open'
pack-objects's --stdin-packs=follow mode learns to handle excluded-but-open packs. * tb/stdin-packs-excluded-but-open: repack: mark non-MIDX packs above the split as excluded-open pack-objects: support excluded-open packs with --stdin-packs t7704: demonstrate failure with once-cruft objects above the geometric split pack-objects: refactor `read_packs_list_from_stdin()` to use `strmap` pack-objects: plug leak in `read_stdin_packs()`
2 parents d75badf + 9ad29df commit 03311dc

7 files changed

Lines changed: 366 additions & 97 deletions

File tree

Documentation/git-pack-objects.adoc

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,24 @@ base-name::
9494
included packs (those not beginning with `^`), excluding any
9595
objects listed in the excluded packs (beginning with `^`).
9696
+
97-
When `mode` is "follow", objects from packs not listed on stdin receive
98-
special treatment. Objects within unlisted packs will be included if
99-
those objects are (1) reachable from the included packs, and (2) not
100-
found in any excluded packs. This mode is useful, for example, to
101-
resurrect once-unreachable objects found in cruft packs to generate
102-
packs which are closed under reachability up to the boundary set by the
103-
excluded packs.
97+
When `mode` is "follow" packs may additionally be prefixed with `!`,
98+
indicating that they are excluded but not necessarily closed under
99+
reachability. In addition to objects in included packs, the resulting
100+
pack may include additional objects based on the following:
101+
+
102+
--
103+
* If any packs are marked with `!`, then objects reachable from such
104+
packs or included ones via objects outside of excluded-closed packs
105+
will be included. In this case, all `^` packs are treated as closed
106+
under reachability.
107+
* Otherwise (if there are no `!` packs), objects within unlisted packs
108+
will be included if those objects are (1) reachable from the
109+
included packs, and (2) not found in any excluded packs.
110+
--
111+
+
112+
This mode is useful, for example, to resurrect once-unreachable
113+
objects found in cruft packs to generate packs which are closed under
114+
reachability up to the boundary set by the excluded packs.
104115
+
105116
Incompatible with `--revs`, or options that imply `--revs` (such as
106117
`--all`), with the exception of `--unpacked`, which is compatible.

0 commit comments

Comments
 (0)