| 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`. |