|
| 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 between `0` and `1` |
| 51 | + (inclusive). 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`. |
0 commit comments