Subject: Re: sparse fetch, was Re: [PATCH 08/12] git-clone: support --path to do sparse clone

From: Petr Baudis <[email-masked]>
Date: Fri, 25 Jul 2008 02:42:10 +0200

Hi,

On Fri, Jul 25, 2008 at 02:12:31AM +0200, Johannes Schindelin wrote:
> On Thu, 24 Jul 2008, Sverre Rabbelier wrote:
> 
> > On Thu, Jul 24, 2008 at 8:53 PM, Petr Baudis <[email-masked]> wrote:
> > >  I don't follow how these two issues arise, if the server will do the 
> > > pruning for you. It will just skip entering some tree objects when 
> > > doing object traversal; why opening the git protocol or faking 
> > > commits? This would be a simple extra capability in the protocol.
> > 
> > Wouldn't that be as simple as passing a pathspec to git-rev-list? Not a 
> > lot of overhead there I reckon.
> 
> So the server would _not_ have to deflate the objects to inspect them?  I 
> thought you knew more about Git's object database.
..snip..
> You'd still have to inspect the objects, which is way more work than the 
> current code has to do.  Remember: in the optimal case, upload-pack does 
> not more than just serve the existing deltas/base objects.

  then right now, exactly how does the server decide that the blob
7a7ff130 should be served along git.git HEAD? I still see upload-pack.c
calling traverse_commit_list() that does process_tree() on every tree,
etc. But the code is not straightforward, maybe I'm missing some
shortcut?

-- 
				Petr "Pasky" Baudis
As in certain cults it is possible to kill a process if you know
its true name.  -- Ken Thompson and Dennis M. Ritchie