Raw
1 NOTE: The configuration options in `bitmapPseudoMerge.*` are considered
2 EXPERIMENTAL and may be subject to change or be removed entirely in the
3 future. For more information about the pseudo-merge bitmap feature, see
4 the "Pseudo-merge bitmaps" section of linkgit:gitpacking[7].
5
6 bitmapPseudoMerge.<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 +
13 Commits are grouped into pseudo-merge groups based on whether or not
14 any reference(s) that point at a given commit match the pattern, which
15 is an extended regular expression.
16 +
17 Within a pseudo-merge group, commits may be further grouped into
18 sub-groups based on the capture groups in the pattern. These
19 sub-groupings are formed from the regular expressions by concatenating
20 any capture groups from the regular expression, with a '-' dash in
21 between.
22 +
23 For example, if the pattern is `refs/tags/`, then all tags (provided
24 they meet the below criteria) will be considered candidates for the
25 same pseudo-merge group. However, if the pattern is instead
26 `refs/remotes/([0-9])+/tags/`, then tags from different remotes will
27 be grouped into separate pseudo-merge groups, based on the remote
28 number.
29
30 bitmapPseudoMerge.<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 +
36 Setting the decay rate equal to `0` will cause all groups to be the
37 same size. Setting the decay rate equal to `1` will cause the `n`th
38 group to be `1/n` the size of the initial group. Higher values of the
39 decay rate cause consecutive groups to shrink at an increasing rate.
40 The default is `1`.
41 +
42 If all groups are the same size, it is possible that groups containing
43 newer commits will be able to be used less often than earlier groups,
44 since it is more likely that the references pointing at newer commits
45 will be updated more often than a reference pointing at an old commit.
46
47 bitmapPseudoMerge.<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 greater than `0` and
51 less than or equal to `1`. The default is `1`.
52
53 bitmapPseudoMerge.<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
59 bitmapPseudoMerge.<name>.maxMerges::
60 Determines the maximum number of pseudo-merge commits among
61 which commits may be distributed.
62 +
63 For pseudo-merge groups whose pattern does not contain any capture
64 groups, this setting is applied for all commits matching the regular
65 expression. For patterns that have one or more capture groups, this
66 setting is applied for each distinct capture group.
67 +
68 For example, if your capture group is `refs/tags/`, then this setting
69 will distribute all tags into a maximum of `maxMerges` pseudo-merge
70 commits. However, if your capture group is, say,
71 `refs/remotes/([0-9]+)/tags/`, then this setting will be applied to
72 each remote's set of tags individually.
73 +
74 Must be non-negative. The default value is 64.
75
76 bitmapPseudoMerge.<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 +
83 Setting this threshold to a smaller value (e.g., 1.week.ago) will cause
84 more stable groups to be generated (which impose a one-time generation
85 cost) but those groups will likely become stale over time. Using a
86 larger value incurs the opposite penalty (fewer stable groups which are
87 more useful).
88
89 bitmapPseudoMerge.<name>.stableSize::
90 Determines the size (in number of commits) of a stable
91 psuedo-merge bitmap. The default is `512`.