{"push_id":1895777601,"size":15,"distinct_size":13,"ref":"refs/heads/jk/bundle-fetch-wip","head":"857191f667c6520babd73b4f4565b31450ad9853","before":"a706614f7465e10313f2a0873830b0c29a77a1b4","commits":[{"sha":"cf8899d285d2648013040ec7196ffd3de0606664","author":{"name":"Junio C Hamano","email":"3228067b6039a0d99bddaf967dafdecd5cc61600@pobox.com"},"message":"Git 2.13.4\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/cf8899d285d2648013040ec7196ffd3de0606664"},{"sha":"c3eb4e6bfefc71a84ed47d3eb23e523b29f60479","author":{"name":"Junio C Hamano","email":"3228067b6039a0d99bddaf967dafdecd5cc61600@pobox.com"},"message":"Sync with v2.13.4","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/c3eb4e6bfefc71a84ed47d3eb23e523b29f60479"},{"sha":"55672f7cebf50f9bbde4b8b887e0b0def5b3e2ea","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"message":"http: turn off curl signals\n\nCurl sets and clears the handler for SIGALRM, which makes it\nincompatible with git's progress code. However, we can ask\ncurl not to do this.","distinct":true,"url":"https://api.github.com/repos/peff/git/commits/55672f7cebf50f9bbde4b8b887e0b0def5b3e2ea"},{"sha":"38c33beb10e01201a69337273538a71f3e71d2e6","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"message":"http: refactor http_request function\n\nThis function takes a flag to indicate where the output\nshould go (either to a file or to a strbuf). This flag is\nmostly used to set the callback function we hand to curl.\n\nThis isn't very flexible for adding new output types.\nInstead, let's just let callers pass in the callback\nfunction directly. This results in shorter, more readable,\nand more flexible code.\n\nThe only other thing the flag was used for was to set a\n\"Range\" header when we already have a partial file (by using\nthe results of ftell). This patch also adds an \"offset\"\nparameter, which can be used by callers to specify this\nfeature separately (which is also more flexible, as non-FILE\ncallers can now resume partial transfers).","distinct":true,"url":"https://api.github.com/repos/peff/git/commits/38c33beb10e01201a69337273538a71f3e71d2e6"},{"sha":"e850d0de22e395b9e1ed23cd463ef9b072edc7f2","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"message":"http: add a public function for arbitrary-callback request\n\nThe http_request function recently learned to take arbitrary\ncallbacks; let's expose this functionality to callers.","distinct":true,"url":"https://api.github.com/repos/peff/git/commits/e850d0de22e395b9e1ed23cd463ef9b072edc7f2"},{"sha":"70acafd072b776dfd64560e2f0948bc88d6aa716","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"message":"remote-curl: use http callback for requesting refs\n\nThis should behave identically to the current strbuf code,\nbut opens up room for us to do more clever things with\nbundles in a future patch.","distinct":true,"url":"https://api.github.com/repos/peff/git/commits/70acafd072b776dfd64560e2f0948bc88d6aa716"},{"sha":"24a7b524ba71f96365b782beea5da8b60b4c7000","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"message":"transport: factor out bundle to ref list conversion\n\nThere is a data structure mismatch between what the\ntransport code wants (a linked list of \"struct ref\") and\nwhat the bundle header provides (an array of ref names and\nsha1s), so the transport code has to convert.\n\nLet's factor out this conversion to make it useful to other\ntransport-ish callers (like remote-curl).","distinct":true,"url":"https://api.github.com/repos/peff/git/commits/24a7b524ba71f96365b782beea5da8b60b4c7000"},{"sha":"73014d7d394a69fa3d272656220c331020ed4ec6","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"message":"bundle: add is_bundle_buf helper\n\nThis is similar to is_bundle, but checks an in-memory buffer\nrather than a file. It also works on a partial buffer,\nchecking only the bundle signature. This means the result is\na three-way conditional: yes, no, or \"we do not have enough\ndata yet\".","distinct":true,"url":"https://api.github.com/repos/peff/git/commits/73014d7d394a69fa3d272656220c331020ed4ec6"},{"sha":"1d2ddcfb91c27a32c59e451bb83a3260215d1f0c","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"message":"remote-curl: free \"discovery\" object\n\nWe cache the last-used \"discovery\" object, which contains\nthe data we pulled from the remote about which refs it has,\nwhich saves us an HTTP round-trip when somebody does\nsomething like \"list\" followed by \"fetch\".\n\nWe don't bother free()ing it at the end of the program\nbecause it just contains memory which will be reclaimed by\nthe OS. However, cleaning up explicitly will future-proof us\nagainst later changes which will add external storage (like\ntemporary files).","distinct":true,"url":"https://api.github.com/repos/peff/git/commits/1d2ddcfb91c27a32c59e451bb83a3260215d1f0c"},{"sha":"f4537a69aa121bdae565188cadbdb90e4daae7ef","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"message":"remote-curl: auto-detect bundles when fetching refs\n\nYou can't currently fetch from a network bundle, like:\n\n  git fetch http://example.com/foo.bundle\n\nThis patch takes the first (and biggest) step towards that\nworking: it auto-detects when fetching refs results in a\nbundle, and automatically spools the bundle to disk and\nfetches from it.\n\nThere are a few important design decisions to note:\n\n  1. We auto-detect the bundle based on content, not based\n     on a special token in the URL (like ending in\n     \".bundle\"). This lets the server side be flexible with\n     its URLs (e.g., \"http://example.com/bundle?repo=foo\").\n\n  2. When fetching refs, we don't actually fetch $URL, but\n     start with $URL/info/refs, looking for smart or dumb\n     http. Some servers, when file \"foo.bundle\" exists, will\n     serve it to the client when \"foo.bundle/info/refs\" is\n     requested. Therefore we may be \"surprised\" to receive a\n     bundle when we thought we were just getting the list of\n     refs, and need to handle it appropriately.\n\n  3. We spool the bundle to disk, and then run \"index-pack\n     --fix-thin\" to create a packfile. That means we will\n     momentarily use twice the size of the bundle in local\n     disk space. Avoiding this would mean piping directly to\n     \"index-pack --fix-thin\".  However, if we want to be\n     able to resume the transfer of the bundle after an\n     interruption, then we need to save the bundle's pack.\n\n     In theory a smart index-pack that was interrupted could\n     write out its partial results along with a count of how\n     many bytes it actually consumed (i.e., where to resume\n     next time), and then pick up where it left off when fed\n     the rest of the data. But index-pack isn't that smart\n     yet, so let's start off with spooling.\n\nNo tests yet, as apache is not one of the \"surprising\"\nservers from (2), and our test harness is based around that\n(though just with this patch, you can fetch from surprising\nservers like lighttpd).","distinct":true,"url":"https://api.github.com/repos/peff/git/commits/f4537a69aa121bdae565188cadbdb90e4daae7ef"},{"sha":"2f728734193bab1e482d8006596a8b8e9a23c04d","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"message":"remote-curl: try base $URL after $URL/info/refs\n\nWhen fetching via http, we will try \"$URL/info/refs\" to get\nthe list of refs. We may get an unexpected bundle from that\ntransfer, and we already handle that case. But we should\nalso check just \"$URL\" to see if it's a bundle.","distinct":true,"url":"https://api.github.com/repos/peff/git/commits/2f728734193bab1e482d8006596a8b8e9a23c04d"},{"sha":"da69640374929e61d237bc45ef021ad2a7307ed2","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"message":"progress: allow pure-throughput progress meters\n\nThe progress code assumes we are counting something (usually\nobjects), even if we are measuring throughput. This works\nfor fetching packfiles, since they show us the object count\nalongside the throughput, like:\n\n  Receiving objects:   2% (301/11968), 22.00 MiB | 10.97 MiB/s\n\nYou can also tell the progress code you don't know how many\nitems you have (by specifying a total of 0), and it looks\nlike:\n\n  Counting objects: 34957\n\nHowever, if you're fetching a single large item, you want\nthroughput but you might not have a meaningful count. You\ncan say you are getting item 0 or 1 out of 1 total, but then\nthe percent meter is misleading:\n\n  Downloading:   0% (0/1), 22.00 MiB | 10.97 MiB/s\n\nor\n\n  Downloading: 100% (0/1), 22.00 MiB | 10.97 MiB/s\n\nNeither of those is accurate. You are probably somewhere\nbetween zero and 100 percent through the operation, but you\ndon't know how far.\n\nTelling it you don't know how many items is even uglier:\n\n  Downloading: 1, 22.00 MiB | 10.97 MiB/s\n\nInstead, this patch will omit the count entirely if you are\non the zero-th item of an unknown number of items. It looks\nlike:\n\n  Downloading: 22.00 MiB | 10.97 MiB/s","distinct":true,"url":"https://api.github.com/repos/peff/git/commits/da69640374929e61d237bc45ef021ad2a7307ed2"},{"sha":"e13cbee715a76562fe3fcb7cc2c0f3d207dd408c","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"message":"remote-curl: show progress for bundle downloads\n\nGenerally, the point of fetching from a bundle is that it's\nbig. Without a progress meter, git will appear to hang\nduring the long download.\n\nThis patch adds a throughput meter (i.e., just the bytes\ntransferred and the rate). In the long run, we should look\nfor a content-length header from the server so we can show a\ntotal size and completion percentage. However, displaying\nthat properly will require some surgery to the progress\ncode, so let's leave it as a future enhancement.","distinct":true,"url":"https://api.github.com/repos/peff/git/commits/e13cbee715a76562fe3fcb7cc2c0f3d207dd408c"},{"sha":"a2acc9def05df5aa53188e199d0e485083b8ca1b","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"message":"remote-curl: resume interrupted bundle transfers\n\nIf we have a bundle file from a previous fetch that matches\nthis URL, then we should resume the transfer where we left\noff.","distinct":true,"url":"https://api.github.com/repos/peff/git/commits/a2acc9def05df5aa53188e199d0e485083b8ca1b"},{"sha":"857191f667c6520babd73b4f4565b31450ad9853","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"message":"clone: give advice on how to resume a failed clone [ci skip]\n\nWhen clone fails, we usually delete the partial directory.\nHowever, if cloning was fetching a bundle, that is resumable\nand we should consider those results precious.\n\nThis patch detects when a partial bundle is present,\npreserves the directory, and gives the user some advice\nabout how to resume.","distinct":true,"url":"https://api.github.com/repos/peff/git/commits/857191f667c6520babd73b4f4565b31450ad9853"}]}
{"actor":{"display_login":"peff"}}