Git fork
1NOTE: The configuration options in `bitmapPseudoMerge.*` are considered
2EXPERIMENTAL and may be subject to change or be removed entirely in the
3future. For more information about the pseudo-merge bitmap feature, see
4the "Pseudo-merge bitmaps" section of linkgit:gitpacking[7].
5
6bitmapPseudoMerge.<name>.pattern::
7 Regular expression used to match reference names. Commits
8 pointed to by references matching this pattern (and meeting
9 the below criteria, like `bitmapPseudoMerge.<name>.sampleRate`
10 and `bitmapPseudoMerge.<name>.threshold`) will be considered
11 for inclusion in a pseudo-merge bitmap.
12+
13Commits are grouped into pseudo-merge groups based on whether or not
14any reference(s) that point at a given commit match the pattern, which
15is an extended regular expression.
16+
17Within a pseudo-merge group, commits may be further grouped into
18sub-groups based on the capture groups in the pattern. These
19sub-groupings are formed from the regular expressions by concatenating
20any capture groups from the regular expression, with a '-' dash in
21between.
22+
23For example, if the pattern is `refs/tags/`, then all tags (provided
24they meet the below criteria) will be considered candidates for the
25same pseudo-merge group. However, if the pattern is instead
26`refs/remotes/([0-9])+/tags/`, then tags from different remotes will
27be grouped into separate pseudo-merge groups, based on the remote
28number.
29
30bitmapPseudoMerge.<name>.decay::
31 Determines the rate at which consecutive pseudo-merge bitmap
32 groups decrease in size. Must be non-negative. This parameter
33 can be thought of as `k` in the function `f(n) = C * n^-k`,
34 where `f(n)` is the size of the `n`th group.
35+
36Setting the decay rate equal to `0` will cause all groups to be the
37same size. Setting the decay rate equal to `1` will cause the `n`th
38group to be `1/n` the size of the initial group. Higher values of the
39decay rate cause consecutive groups to shrink at an increasing rate.
40The default is `1`.
41+
42If all groups are the same size, it is possible that groups containing
43newer commits will be able to be used less often than earlier groups,
44since it is more likely that the references pointing at newer commits
45will be updated more often than a reference pointing at an old commit.
46
47bitmapPseudoMerge.<name>.sampleRate::
48 Determines the proportion of non-bitmapped commits (among
49 reference tips) which are selected for inclusion in an
50 unstable pseudo-merge bitmap. Must be between `0` and `1`
51 (inclusive). The default is `1`.
52
53bitmapPseudoMerge.<name>.threshold::
54 Determines the minimum age of non-bitmapped commits (among
55 reference tips, as above) which are candidates for inclusion
56 in an unstable pseudo-merge bitmap. The default is
57 `1.week.ago`.
58
59bitmapPseudoMerge.<name>.maxMerges::
60 Determines the maximum number of pseudo-merge commits among
61 which commits may be distributed.
62+
63For pseudo-merge groups whose pattern does not contain any capture
64groups, this setting is applied for all commits matching the regular
65expression. For patterns that have one or more capture groups, this
66setting is applied for each distinct capture group.
67+
68For example, if your capture group is `refs/tags/`, then this setting
69will distribute all tags into a maximum of `maxMerges` pseudo-merge
70commits. However, if your capture group is, say,
71`refs/remotes/([0-9]+)/tags/`, then this setting will be applied to
72each remote's set of tags individually.
73+
74Must be non-negative. The default value is 64.
75
76bitmapPseudoMerge.<name>.stableThreshold::
77 Determines the minimum age of commits (among reference tips,
78 as above, however stable commits are still considered
79 candidates even when they have been covered by a bitmap) which
80 are candidates for a stable a pseudo-merge bitmap. The default
81 is `1.month.ago`.
82+
83Setting this threshold to a smaller value (e.g., 1.week.ago) will cause
84more stable groups to be generated (which impose a one-time generation
85cost) but those groups will likely become stale over time. Using a
86larger value incurs the opposite penalty (fewer stable groups which are
87more useful).
88
89bitmapPseudoMerge.<name>.stableSize::
90 Determines the size (in number of commits) of a stable
91 psuedo-merge bitmap. The default is `512`.