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

RE: Re-Transmission of blobs?

From
PUPyeron, Jason J CTR (US) <jason.j.pyeron.ctr@mail.mil>
Date
Sep 12, 2013, 12:45 UTC
Message-ID
<871B6C10EBEFE342A772D1159D132085571A7A1B@umechphj.easf.csd.disa.mil>
In-Reply-To
<20130912092339.GA30702@sigill.intra.peff.net>
Show 21 quoted lines
> -----Original Message-----
> From: Jeff King
> Sent: Thursday, September 12, 2013 5:24 AM
> 
> On Thu, Sep 12, 2013 at 09:42:41AM +0200, Josef Wolf wrote:
> 
> > > >> There are some work being done to optimize this further using
> > > >> various techniques, but they are not ready yet.
> > >
> > > And this still stands.
> >
> > Do you have a pointer or something? I'd like to check out whether I
> can
> > contribute to this work.
> 
> I think Junio is referring to the reachability bitmap work. We may know
> that the other side has commit "E" (and therefore every object
> reachable
> from it), but we do not walk the graph to find the complete set of
> reachable objects. Doing so requires a lot of CPU and I/O, and in most
> cases does not help much.
If the rules of engagement are change a bit, the server side can be release from most of its work (CPU/IO).
Client does the following, looping as needed:

Heads=server->heads(); KnownCommits=Local->AllCommits(); Missingblobs=[]; Foreach(commit:heads) if (!knownCommits->contains(commit)) MissingBlobs[]=commit; Foreach(commit:knownCommit) if (!commit->isValid()) MissingBlobs[]=commit->blobs(); If (missingBlobs->size()>0) server->FetchBlobs(missingBlobs);

This should work efficiently for the server if a) the client is empty b) the client is corrupt c) the client is up to date

Extending the server->fetchBlobs() to be more fancy, like taking patterns, such as between aaaaaa and dddddd exclusive is an exercise for someone else.
Previous: Josef WolfNext: Jeff King
Message 14 of 19 in “Re-Transmission of blobs?”
  1. Josef WolfSep 10, 2013
  2. Junio C HamanoSep 10, 2013
  3. Josef WolfSep 11, 2013
  4. Junio C HamanoSep 11, 2013
  5. Josef WolfSep 12, 2013
  6. Jeff KingSep 12, 2013
  7. Josef WolfSep 12, 2013
  8. Jeff KingSep 12, 2013
  9. Josef WolfSep 13, 2013
  10. Jeff KingSep 16, 2013
  11. Josef WolfSep 20, 2013
  12. Jeff KingSep 24, 2013
  13. Josef WolfSep 24, 2013
  14. Pyeron, Jason J CTR (US)Sep 12, 2013
  15. Jeff KingSep 12, 2013
  16. Pyeron, Jason J CTR (US)Sep 12, 2013
  17. Josef WolfSep 13, 2013
  18. Jason PyeronSep 13, 2013
  19. Duy NguyenSep 13, 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.