git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: reftable [v6]: new ref storage format

From
Stefan Beller <sbeller@google.com>
Date
Aug 7, 2017, 18:27 UTC
Message-ID
<CAGZ79kZO517Bg+O2z3dr+oHqO_av1__FU3h9bP=rhXJUSDnRjA@mail.gmail.com>
In-Reply-To
<CAJo=hJtg0PAVHT1phbArdra8+4LfnEEuaj3fBid==BXkZghi8g@mail.gmail.com>
On Sun, Aug 6, 2017 at 6:47 PM, Shawn Pearce <spearce@spearce.org> wrote:
Show 11 quoted lines
> 6th iteration of the reftable storage format.
>
> You can read a rendered version of this here:
> https://googlers.googlesource.com/sop/jgit/+/reftable/Documentation/technical/reftable.md
>
> Changes from v5:
> - extensions.refStorage = reftable is used to select this format.
>
> - Log records can be explicitly deleted (for refs/stash).
> - Log records may use Michael Haggerty's chained idea to compress before zlib.
>   This saved ~5.8% on one of my example repositories.
Some observations:
Also the bits in the records changed in v5 or v6:
  0x0..0x3 is valid for a ref,
  obj records have a ccnt
  0x0, 0x1, 0x4..0x7 are used in the logs
We have the following block indicators:
  'r'  ref block
  'o' object block
  'g' log block
  high bit for any index.

Without prior knowledge an index doesn't indicate if it indexes refs, objects or logs. To find out, one must follow an arbitrary entry which points to either an index again or at a block marked with 'r', 'o' or 'g'.

Okay with me.
> The index may be organized into a multi-level index, where ...
> which may in turn point to either index blocks (3rd level) or ref blocks (leaf level).
So we allow 3 levels at most?

The file format structure marks the indexes '?', should that be rather '*' to indicate there can be more than one index block?

Previous: Shawn PearceNext: Shawn Pearce
Message 2 of 12 in “Re: reftable [v6]: new ref storage format”
  1. Shawn PearceAug 7, 2017
  2. Stefan BellerAug 7, 2017
  3. Shawn PearceAug 7, 2017
  4. Stefan BellerAug 8, 2017
  5. Jeff KingAug 8, 2017
  6. Junio C HamanoAug 8, 2017
  7. Shawn PearceAug 8, 2017
  8. Junio C HamanoAug 8, 2017
  9. Shawn PearceAug 9, 2017
  10. Junio C HamanoAug 8, 2017
  11. Shawn PearceAug 8, 2017
  12. Michael HaggertyAug 14, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.