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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html