On Fri, 23 Aug 2013, Junio C Hamano wrote:

> 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
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to