Message ID | 661c1137e1c918619f6624d2e331bafd9c3281dc.1655728395.git.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | bitmap: integrate a lookup table extension to the bitmap format | expand |
On Mon, Jun 20, 2022 at 12:33:12PM +0000, Taylor Blau via GitGitGadget wrote: > From: Taylor Blau <ttaylorr@github.com> > > Teach git to provide a way for users to enable/disable bitmap lookup > table extension by providing a config option named 'writeBitmapLookupTable'. > > Signed-off-by: Taylor Blau <ttaylorr@github.com> > Signed-off-by: Abhradeep Chakraborty <chakrabortyabhradeep79@gmail.com> > --- > Documentation/config/pack.txt | 7 +++++++ > builtin/pack-objects.c | 8 ++++++++ > 2 files changed, 15 insertions(+) > > diff --git a/Documentation/config/pack.txt b/Documentation/config/pack.txt > index ad7f73a1ead..e12008d2415 100644 > --- a/Documentation/config/pack.txt > +++ b/Documentation/config/pack.txt > @@ -164,6 +164,13 @@ When writing a multi-pack reachability bitmap, no new namehashes are > computed; instead, any namehashes stored in an existing bitmap are > permuted into their appropriate location when writing a new bitmap. > > +pack.writeBitmapLookupTable:: > + When true, git will include a "lookup table" section in the s/git/Git (I typically use "git" when talking about the command-line tool, and Git when talking about the project as a proper noun). > + bitmap index (if one is written). This table is used to defer > + loading individual bitmaps as late as possible. This can be > + beneficial in repositories which have relatively large bitmap > + indexes. Defaults to false. Is there a reason that we would want to default to "false" here? Perhaps in the first version of two we would want this to be an opt-in (since there is no publicly documented way to opt-out of reading the extension once it is written). We should make sure to enable this by default at some point in the future. > pack.writeReverseIndex:: ...since it's easy to forget ;-). Thanks, Taylor
diff --git a/Documentation/config/pack.txt b/Documentation/config/pack.txt index ad7f73a1ead..e12008d2415 100644 --- a/Documentation/config/pack.txt +++ b/Documentation/config/pack.txt @@ -164,6 +164,13 @@ When writing a multi-pack reachability bitmap, no new namehashes are computed; instead, any namehashes stored in an existing bitmap are permuted into their appropriate location when writing a new bitmap. +pack.writeBitmapLookupTable:: + When true, git will include a "lookup table" section in the + bitmap index (if one is written). This table is used to defer + loading individual bitmaps as late as possible. This can be + beneficial in repositories which have relatively large bitmap + indexes. Defaults to false. + pack.writeReverseIndex:: When true, git will write a corresponding .rev file (see: link:../technical/pack-format.html[Documentation/technical/pack-format.txt]) diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index cc5f41086da..3ba20301980 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -3148,6 +3148,14 @@ static int git_pack_config(const char *k, const char *v, void *cb) else write_bitmap_options &= ~BITMAP_OPT_HASH_CACHE; } + + if (!strcmp(k, "pack.writebitmaplookuptable")) { + if (git_config_bool(k, v)) + write_bitmap_options |= BITMAP_OPT_LOOKUP_TABLE; + else + write_bitmap_options &= ~BITMAP_OPT_LOOKUP_TABLE; + } + if (!strcmp(k, "pack.usebitmaps")) { use_bitmap_index_default = git_config_bool(k, v); return 0;