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

Re: [Patch] Prevent cloning over http from spewing

From
Tay Ray Chuan <rctay89@gmail.com>
Date
Jun 4, 2009, 12:45 UTC
Message-ID
<be6fef0d0906040545j7bd754e0j2c60af833e2ac4a4@mail.gmail.com>
In-Reply-To
<20090603191555.GL3355@spearce.org>
Hi,
On Thu, Jun 4, 2009 at 3:15 AM, Shawn O. Pearce <spearce@spearce.org> wrote:
Show 14 quoted lines
> No, you are right Peff, you can't give a "percent complete" because
> you don't know how much you need to fetch.
>
> What we could do is try to organize the fetch queue by object type,
> get all commits, then all trees, then blobs.  The blobs are the
> bulk of the data, and by the time we hit them, we should be able
> to give some estimate on progress because we have all of the ones
> we need to fetch in our fetch queue.  But its only a "object count"
> sort of thing, not a byte count.
>
> When fetching a .idx or a .pack though, we should be able to show
> progress... assuming the server sent us a Content-Length header.
> If not, in the case of a pack, we could still show receive speed
> like index-pack does.

I have a branch 'http-progress-indicators' at my repo git://github.com/rctay/git.git. It contains a patch on walker.c that updates the object total as the fetch goes along. The progress indicator says "Processing targets:..." for lack of a better name; I'm all for suggestions.

The branch also patches that display progress meters for the downloading of .idx and .pack files. I also added a progress indicator for verifying pack files in pack-check.c, because I noticed some significant time was spent doing that without informing the user about what was going on, but I'm not really sure if everyone else would accept it.

So far, I've used git built using that branch to fetch the git repo, and I also attempted the linux 2.6 kernel repo. Counting the objects fetched was accurate in both cases (ie. matching counts of objects fetched and objects to-be-fetched).

I plan to clean up the patches and send it in when the http refactoring patches are finalized.

Show 7 quoted lines
> Jeff King <peff@peff.net> wrote:
>>   1. summarize what we have fetched (N packs, N loose objects)
>>   2. show what we are currently fetching (object or pack)
>>   3. show the number of bytes retrieved for the current item
>>   4. if the server provides content-length, show the percentage
>>      completed for this object
>>   5. show the current throughput

Points 1. and 5. can probably be combined, because showing info by type (packs and objects) isn't very easy to do. http-walker.c first tries to fetch the raw pack; if it can't be found at the url, or at alternate locations, it then tries to fetching packs. In other words, it's hard to know in advance if the object is found in unpacked or packed form.

-- 
Cheers,
Ray Chuan
Previous: Shawn O. PearceNext: Jeff King
Message 11 of 23 in “Prevent cloning over http from spewing”
  1. Prevent cloning over http from spewingsparse@infidigm.net, Jun 2, 2009
  2. Erik Faye-LundJun 3, 2009
  3. Jakub NarebskiJun 3, 2009
  4. Junio C HamanoJun 3, 2009
  5. Jeff KingJun 3, 2009
  6. Shawn O. PearceJun 3, 2009
  7. Jeff KingJun 3, 2009
  8. Shawn O. PearceJun 3, 2009
  9. Jeff KingJun 3, 2009
  10. Shawn O. PearceJun 3, 2009
  11. Tay Ray ChuanJun 4, 2009
  12. Jeff KingJun 4, 2009
  13. Tay Ray ChuanJun 7, 2009
  14. Tay Ray ChuanJun 7, 2009
  15. Jeff KingJun 8, 2009
  16. Tay Ray ChuanJun 10, 2009
  17. Tay Ray ChuanJun 10, 2009
  18. Jeff KingJun 11, 2009
  19. Tay Ray ChuanJun 22, 2009
  20. Tay Ray ChuanJul 20, 2009
  21. Jeff KingJun 8, 2009
  22. Tay Ray ChuanJun 7, 2009
  23. Jakub NarebskiJun 5, 2009

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.