public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: "Shawn O. Pearce" <spearce@spearce•org>
To: Steven Grimm <koreth@midwinter•com>
Cc: Nicolas Pitre <nico@cam•org>, Sam Vilain <sam@vilain•net>,
	Junio C Hamano <junkio@cox•net>,
	Daniel Barkalow <barkalow@iabervon•org>,
	Theodore Ts'o <tytso@mit•edu>,
	Git Mailing List <git@vger•kernel.org>
Subject: Re: [PATCH] Add --no-reuse-delta option to git-gc
Date: Mon, 11 Jun 2007 02:31:18 -0400	[thread overview]
Message-ID: <20070611063118.GF6073@spearce.org> (raw)
In-Reply-To: <466CE998.9000706@midwinter.com>

Steven Grimm <koreth@midwinter•com> wrote:
> Nicolas Pitre wrote:
> >
> >It won't happen for a simple reason: to be backward compatible with 
> >older GIT clients.  If you have your repo compressed with bzip2 and an 
> >old client pulls it then the server would have to decompress and 
> >recompress everything with gzip.  If instead your repo remains with gzip 
> >and a new client asks for bzip2 then you have to recompress as well 
> >(slow).  So in practice it is best to remain with a single compression 
> >method.
> >  
> 
> Not that I really think this is all that important (my original question 
> was more out of curiosity than anything) but I don't think those are 
> really issues.
...
> And since the hypothetical new client would have support for both 
> compression types, pulling from a gzip-based repo could be accomplished 
> totally transparently; you could, one assumes, even pull from a gzip 
> repo and pack locally using the other scheme if you felt like it.

Right, I agree with Steven here.

Pack v4 (which is rapidly becoming vaporware it seems) uses such
a radically different encoding for its commit and tree objects
that you cannot send them as-is to a client unless that client
also understands pack v4.  Consequently you need to decompress and
recompress those objects when talking to an older peer; this isn't
very different from a switch to bzip2.

That said, I think switching to a different generic compressor isn't
that interesting.  We can probably do a lot better by organizing
files into clusters, where those clusters have large number of
symbols in common, and then compress everything in the same cluster
with the same pack-wide dictionary.

Specifically I'm thinking that you may be able to cluster the *.h/*.c
into one cluster, and the Makefile into another, and the .gitignore
into a third cluster, and then leverage the large commonalities
between those blobs when building a dictionary and compressing them.
No, I haven't prototyped it out yet.

-- 
Shawn.

  reply	other threads:[~2007-06-11  6:31 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-08  2:54 [PATCH] Add --no-reuse-delta, --window, and --depth options to git-gc Theodore Ts'o
2007-05-08  3:13 ` Nicolas Pitre
2007-05-08  3:21   ` Theodore Tso
2007-05-08  3:38     ` Dana How
2007-05-08  4:43     ` Junio C Hamano
2007-05-08 13:28       ` [PATCH] Add --no-reuse-delta, --window, and --depth options to Theodore Ts'o
2007-05-08 13:28         ` [PATCH] Add pack.depth option to git-pack-objects and change default depth to 50 Theodore Ts'o
2007-05-08 13:28           ` [PATCH] Add --no-reuse-delta option to git-gc Theodore Ts'o
2007-05-08 15:35             ` Nicolas Pitre
2007-05-09  5:05             ` Daniel Barkalow
2007-05-09  8:15               ` Junio C Hamano
2007-05-09  9:02                 ` Steven Grimm
2007-05-09 11:35                   ` Other compression?, was " Johannes Schindelin
2007-05-09 15:15                   ` Junio C Hamano
2007-05-09 19:10                   ` Shawn O. Pearce
2007-06-10  7:40                     ` Sam Vilain
2007-06-11  1:51                       ` Nicolas Pitre
2007-06-11  6:20                         ` Steven Grimm
2007-06-11  6:31                           ` Shawn O. Pearce [this message]
2007-06-11 10:20                         ` Johannes Schindelin
2007-06-11 14:01                           ` Nicolas Pitre
2007-06-11 21:40                             ` Johannes Schindelin
2007-05-09 19:48                 ` [PATCH] Add --aggressive option to 'git gc' Theodore Tso
2007-05-09 20:19                   ` Junio C Hamano
2007-05-09 22:22                     ` Theodore Tso
2007-05-10  7:38                   ` Junio C Hamano
2007-05-08 15:38           ` [PATCH] Add pack.depth option to git-pack-objects and change default depth to 50 Nicolas Pitre
2007-05-08 16:30             ` Theodore Tso
2007-05-08 16:49               ` Johannes Schindelin
2007-05-08 18:09                 ` Theodore Tso
2007-05-08 18:46                   ` Nicolas Pitre
2007-05-09 13:49                     ` Theodore Tso
2007-05-09 14:17                       ` Johannes Schindelin
2007-05-08 17:07               ` Dana How
2007-05-08 17:35               ` Nicolas Pitre
2007-05-09  5:03                 ` Junio C Hamano
2007-05-08 15:30         ` [PATCH] Add --no-reuse-delta, --window, and --depth options to Nicolas Pitre
2007-05-08 21:12           ` Junio C Hamano
2007-05-08 23:59             ` Nicolas Pitre
2007-05-08 13:46       ` [PATCH] Add --no-reuse-delta, --window, and --depth options to git-gc Nicolas Pitre

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=20070611063118.GF6073@spearce.org \
    --to=spearce@spearce$(echo .)org \
    --cc=barkalow@iabervon$(echo .)org \
    --cc=git@vger$(echo .)kernel.org \
    --cc=junkio@cox$(echo .)net \
    --cc=koreth@midwinter$(echo .)com \
    --cc=nico@cam$(echo .)org \
    --cc=sam@vilain$(echo .)net \
    --cc=tytso@mit$(echo .)edu \
    /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