public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: Jeff King <peff@peff•net>
To: Martin Fick <mfick@nvidia•com>
Cc: "git@vger•kernel.org" <git@vger•kernel.org>
Subject: Re: Delta Islands without bitmaps?
Date: Thu, 15 Jan 2026 15:39:21 -0500	[thread overview]
Message-ID: <20260115203921.GD1053259@coredump.intra.peff.net> (raw)
In-Reply-To: <CH3PR12MB90262C525E918BDE952987FFC285A@CH3PR12MB9026.namprd12.prod.outlook.com>

On Thu, Jan 08, 2026 at 12:56:03AM +0000, Martin Fick wrote:

> I am having a hard time trying to get delta islands to work as I expect.
> I would like to treat each head as an island of its own, but I do not
> seem able to do this. From reading the code, I believe that I am not
> able to make this work because the feature ignores objects which 
> are not covered by bitmaps and refuses to put them in their own 
> island? I don't see anything in the docs hinting at this, so I wanted to 
> confirm whether my reading of the code was accurate, and to maybe 
> get some clarification as to why this was done? 
> 
> Perhaps this would work if I could force every head to have an 
> associated bitmap, but there doesn't seem to be a way to do this?
> Is there some other way I can force all heads to be in their own 
> individual island?

I don't think you need to use reachability bitmaps with delta islands.
The islands are just about delta selection.

If you read the code you might be thrown off by the use of bitmaps in
the delta island code itself, but these are actual "which islands is
this object in" bitmaps, and not related to on-disk reachability
bitmaps.

It has been a long time since I've fiddled with delta islands, but I
think that just:

  [pack]
  island = refs/heads/(.*)

would work. Then if you had branches "foo", "bar", etc, you'd get
islands "foo" and "bar".

I do suspect that per-head islands may yield a much bigger on-disk
packfile (and bigger clones). It would disallow using an object as a
base if it is not in your oldest branch, even if it is in most of the
other ones. So the deltas of your shared history are subject to the
oldest / least-inclusive branch.

But then, that's kind of the tradeoff of delta islands. It might still
be helpful if you expect people to fetch branches one at a time.

-Peff

      reply	other threads:[~2026-01-15 20:39 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-08  0:56 Delta Islands without bitmaps? Martin Fick
2026-01-15 20:39 ` Jeff King [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260115203921.GD1053259@coredump.intra.peff.net \
    --to=peff@peff$(echo .)net \
    --cc=git@vger$(echo .)kernel.org \
    --cc=mfick@nvidia$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox