On Sun, Aug 26, 2007, Jeff King wrote:I think that "reuse existing packs if sensible" idea (instead of generating always new pack) is a good one, even if at first limited to the clone case. There are nevertheless a few complications. 1. When discussing this idea on git mailing list some time ago somebody said that we don't need to implement "multi pack" extension (which was at the beginning in the design, to add later, if I understand correctly), it is enough to concatenate packs. The receiving side can then detect boundaries between packs and split them appropriately. But is a concatenated a proper pack? If not, then we can send concatenation of packs only if the client (receiving side) understands it, and can split it; it means checking for protocol extension... 2. How to detect that request is for a clone? git-clone is get all remote heads and fetch from just received heads. But because fecthing refs and fetching objects is separate, we cannot I think use this sequence for detecting that we want a clone. We can use "no haves" as heuristic to detect a clone request, but "no haves" occurs also for initial fetching of single branch (i.e. using: git-remote; git-fetch sequence instead of git-clone). 3. The problem with alternates mentioned by Linus is not much a problem, as we can simply consider packs from the alternate repository/repositories. For example if we use single alternate, we would send concatenation of packs from this repository, and from alternate (and pack of loose objects from this repository). We would probably want to have some heuristic (besides configuring git-daemon) to choose between reusing existing packs (and sending them concatenated), and generating a pack for sending. Note that for dumb transports we have the opposite problem and opposite idea: we always send full packs for dumb transports; the idea was to use range downloading (available at least for http and ftp protocols) to download only needed fragments of packs. Perhaps if some % of pack (number of objects in the pack or size of pack) is to be send then we reuse the pack, and remove objects in the pack from consideration. No idea of how to implement that, though. Or if number of objects in pack to be send crosses some threshold, or generating pack/doing reachability analysis takes to loong, then reuse existing packs. Or you can wait fro the GitTorrent protocol to be implemented, or implement it yourself... ;-) -- Jakub Narebski Poland - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
| Jan Kundrát | kswapd high CPU usage with no swap |
| Renato S. Yamane | Error -71 on device descriptor read/all |
| Linus Torvalds | Linux 2.6.27-rc8 |
| Alex Chiang | [PATCH 0/7] Fixups for duplicate slot names |
git: | |
| Peter Karlsson | RCS keyword expansion |
| Wink Saville | Resolving conflicts |
| Andreas Hildebrandt | CVS-$Id:$ replacement in git? |
| Olivier Marin | [PATCH] builtin-rerere: fix conflict markers parsing |
| GVG GVG | ssh_exchange_identification: Connection closed by remote host |
| Felipe Alfaro Solana | quagga-0.99.11 |
| Pc Nicolas | OpenBSD 4.4 httpd reverse proxy |
| Martin Schröder | pkg_add with http? |
| Evgeniy Polyakov | [resend take 2 4/4] DST Makefile/Kconfig files. |
| Volker Armin Hemmann | build error with 2.6.27.6+reiser4+ehci-hub patch. ERROR: "mii_ethtool_gset" [drive... |
| Krzysztof Oledzki | Re: Error: an inet prefix is expected rather than "0/0". |
| David Madore | atl1e Ethernet driver not seeing packets sent to 33:33:00:00:00:01 multicast |
| Block Sub System query | 1 hour ago | Linux kernel |
| kernel module to intercept socket creation | 2 hours ago | Linux kernel |
| Image size changing during each build | 3 hours ago | Linux kernel |
| Soft lock bug | 8 hours ago | Linux kernel |
| sysctl - dynamic registration problem | 14 hours ago | Linux kernel |
| Question on swap as ramdisk partition | 16 hours ago | Linux kernel |
| serial driver xmit problem | 21 hours ago | Linux kernel |
| Generic Netlink subsytem | 22 hours ago | Linux kernel |
| 'Report spam filter error' page broken | 23 hours ago | KernelTrap Suggestions and Feedback |
| Netfilter kernel module | 1 day ago | Linux kernel |
