forked from git/git
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'tb/pseudo-merge-reachability-bitmap' into seen
The pack-bitmap machinery learned to write pseudo-merge bitmaps, which act as imaginary octopus merges covering un-bitmapped reference tips. This enhances bitmap coverage, and thus, performance, for repositories with many references using bitmaps. * tb/pseudo-merge-reachability-bitmap: (24 commits) t/perf: implement performace tests for pseudo-merge bitmaps pseudo-merge: implement support for finding existing merges ewah: `bitmap_equals_ewah()` pack-bitmap: extra trace2 information pack-bitmap.c: use pseudo-merges during traversal t/test-lib-functions.sh: support `--date` in `test_commit_bulk()` pack-bitmap: implement test helpers for pseudo-merge ewah: implement `ewah_bitmap_popcount()` pseudo-merge: implement support for reading pseudo-merge commits pack-bitmap.c: read pseudo-merge extension pseudo-merge: scaffolding for reads pack-bitmap: extract `read_bitmap()` function pack-bitmap-write.c: write pseudo-merge table pack-bitmap-write.c: select pseudo-merge commits pseudo-merge: implement support for selecting pseudo-merge commits pack-bitmap: make `bitmap_writer_push_bitmapped_commit()` public pack-bitmap: implement `bitmap_writer_has_bitmapped_object_id()` pack-bitmap-write: support storing pseudo-merge commits pseudo-merge.ch: initial commit pack-bitmap: move some initialization to `bitmap_writer_init()` ...
- Loading branch information
Showing
19 changed files
with
2,401 additions
and
61 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
bitmapPseudoMerge.<name>.pattern:: | ||
Regular expression used to match reference names. Commits | ||
pointed to by references matching this pattern (and meeting | ||
the below criteria, like `bitmapPseudoMerge.<name>.sampleRate` | ||
and `bitmapPseudoMerge.<name>.threshold`) will be considered | ||
for inclusion in a pseudo-merge bitmap. | ||
+ | ||
Commits are grouped into pseudo-merge groups based on whether or not | ||
any reference(s) that point at a given commit match the pattern, which | ||
is an extended regular expression. | ||
+ | ||
Within a pseudo-merge group, commits may be further grouped into | ||
sub-groups based on the capture groups in the pattern. These | ||
sub-groupings are formed from the regular expressions by concatenating | ||
any capture groups from the regular expression, with a '-' dash in | ||
between. | ||
+ | ||
For example, if the pattern is `refs/tags/`, then all tags (provided | ||
they meet the below criteria) will be considered candidates for the | ||
same pseudo-merge group. However, if the pattern is instead | ||
`refs/remotes/([0-9])+/tags/`, then tags from different remotes will | ||
be grouped into separate pseudo-merge groups, based on the remote | ||
number. | ||
|
||
bitmapPseudoMerge.<name>.decay:: | ||
Determines the rate at which consecutive pseudo-merge bitmap | ||
groups decrease in size. Must be non-negative. This parameter | ||
can be thought of as `k` in the function `f(n) = C * | ||
n^(-k/100)`, where `f(n)` is the size of the `n`th group. | ||
+ | ||
Setting the decay rate equal to `0` will cause all groups to be the | ||
same size. Setting the decay rate equal to `100` will cause the `n`th | ||
group to be `1/n` the size of the initial group. Higher values of the | ||
decay rate cause consecutive groups to shrink at an increasing rate. | ||
The default is `100`. | ||
|
||
bitmapPseudoMerge.<name>.sampleRate:: | ||
Determines the proportion of non-bitmapped commits (among | ||
reference tips) which are selected for inclusion in an | ||
unstable pseudo-merge bitmap. Must be between `0` and `100` | ||
(inclusive). The default is `100`. | ||
|
||
bitmapPseudoMerge.<name>.threshold:: | ||
Determines the minimum age of non-bitmapped commits (among | ||
reference tips, as above) which are candidates for inclusion | ||
in an unstable pseudo-merge bitmap. The default is | ||
`1.week.ago`. | ||
|
||
bitmapPseudoMerge.<name>.maxMerges:: | ||
Determines the maximum number of pseudo-merge commits among | ||
which commits may be distributed. | ||
+ | ||
For pseudo-merge groups whose pattern does not contain any capture | ||
groups, this setting is applied for all commits matching the regular | ||
expression. For patterns that have one or more capture groups, this | ||
setting is applied for each distinct capture group. | ||
+ | ||
For example, if your capture group is `refs/tags/`, then this setting | ||
will distribute all tags into a maximum of `maxMerges` pseudo-merge | ||
commits. However, if your capture group is, say, | ||
`refs/remotes/([0-9]+)/tags/`, then this setting will be applied to | ||
each remote's set of tags individually. | ||
+ | ||
Must be non-negative. The default value is 64. | ||
|
||
bitmapPseudoMerge.<name>.stableThreshold:: | ||
Determines the minimum age of commits (among reference tips, | ||
as above, however stable commits are still considered | ||
candidates even when they have been covered by a bitmap) which | ||
are candidates for a stable a pseudo-merge bitmap. The default | ||
is `1.month.ago`. | ||
|
||
bitmapPseudoMerge.<name>.stableSize:: | ||
Determines the size (in number of commits) of a stable | ||
psuedo-merge bitmap. The default is `512`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.