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

Re: [ANNOUNCE] Git v1.8.4

From
Nicolas Pitre <nico@fluxnic.net>
Date
Aug 27, 2013, 00:06 UTC
Message-ID
<alpine.LFD.2.03.1308232242180.14472@syhkavp.arg>
In-Reply-To
<xmqqfvu0nkim.fsf@gitster.dls.corp.google.com>
On Fri, 23 Aug 2013, Junio C Hamano wrote:
Show 6 quoted lines
> The latest feature release Git v1.8.4 is now available at the usual
> places.  It contains 870+ changes from ~100 contributors (among
> which 33 people are new) since v1.8.3.
> 
> We will have two more releases til the end of this year; the release
> after that could be Git 2.0.
May I land a big teaser for a possible Git 2.0 feature?
Here's some cues:
$ cd git
$ git describe
v1.8.4
$ ls -l .git/objects/pack/
total 44240
-r--r--r-- 1 nico nico  4535112 Aug 26 17:16 pack-b04833b53befec3e6cb459fd72ade62c310a0a0e.idx
-r--r--r-- 1 nico nico 40762151 Aug 26 17:16 pack-b04833b53befec3e6cb459fd72ade62c310a0a0e.pack
$ git packv4-create
Usage: git-packv4-create <src_packfile> <dst_packfile>
$ mkdir test
$ git packv4-create .git/objects/pack/pack-b04833b53befec3e6cb459fd72ade62c310a0a0e test/foo
Scanning objects: 100% (161930/161930), done.
Writing objects: 100% (161930/161930), done.
$ ls -l test
total 31952
-rw------- 1 nico nico  1296512 Aug 26 19:28 foo.idx
-rw------- 1 nico nico 31420190 Aug 26 19:28 foo.pack
[...]

$ cd linux $ git describe v3.11-rc7 $ ls -l .git/objects/pack/ total 756068 -r--r--r-- 1 nico nico 88195164 Aug 26 17:25 pack-7fe7cd3b8af810808649d114a11b8aab1f7c5ae9.idx -r--r--r-- 1 nico nico 686006356 Aug 26 17:25 pack-7fe7cd3b8af810808649d114a11b8aab1f7c5ae9.pack $ mkdir test $ git packv4-create .git/objects/pack/pack-7fe7cd3b8af810808649d114a11b8aab1f7c5ae9 test/foo Scanning objects: 100% (3149789/3149789), done. Writing objects: 100% (3149789/3149789), done. $ ls -l test total 597016 -rw------- 1 nico nico 25199384 Aug 26 19:41 foo.idx -rw------- 1 nico nico 586134328 Aug 26 19:41 foo.pack

Yes, after being vaporware for many many years (I don't even remember when I started making references to a possible pack format version 4 -- certainly more than 6 years ago) I finally completed the code to produce a new pack format I'm actually happy with.

Hundreds of hours went into this work over the years. Lots of head scratching, many dead ends and scrapped attempts. What didn't help is the fact that I never had much time to dedicate to this project. Significant portions of the surviving code were even written when I was on vacation in the Carabeans. And even when it finally worked, the required code cleanup work was impressive.

Note this is the pack _creation_ code only. Nothing is able to read this pack format just yet. What I'm willing to do is a simple compatibility layer that recreates the canonical object representation when accessed. This should already make runtime Git significantly faster when performing graph traversal.

But the biggest gain will come from direct interpretation of the native pack data encoding. However I'll let others do that part, as well as the required fsck support and all the backward compatibility handling, etc. Now that the encoding design is pretty much settled I think it is good for review, and for others to get involved as well.

Interested?  ;-)
Nicolas
Previous: Junio C HamanoNext: Duy Nguyen
Message 2 of 5 in “[ANNOUNCE] Git v1.8.4”
  1. Junio C HamanoAug 23, 2013
  2. Nicolas PitreAug 27, 2013
  3. Duy NguyenAug 27, 2013
  4. Nicolas PitreAug 27, 2013
  5. Junio C HamanoAug 27, 2013

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.