{"push_id":1040715834,"size":161,"distinct_size":48,"ref":"refs/heads/private","head":"aaf8de02fc7354e5d4c692379ce4d56ee0621d1b","before":"8d4c7a279726a86b56742bc0e2d473a9b965abb9","commits":[{"sha":"90f7b16b3adc78d4bbabbd426fb69aa78c714f71","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Git 2.8\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/90f7b16b3adc78d4bbabbd426fb69aa78c714f71"},{"sha":"9d4de1f0cb995171390ad99185bae1b0cbc1de70","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Sync with 2.8\nGit 2.8\n\n# gpg: Signature made Mon 28 Mar 2016 12:19:59 PM PDT using RSA key ID 96AFE6CB\n# gpg: Good signature from \"Junio C Hamano <gitster@pobox.com>\"\n# gpg:                 aka \"Junio C Hamano <junio@pobox.com>\"\n# gpg:                 aka \"Junio C Hamano <jch@google.com>\"\n\n* tag 'v2.8.0':\n  Git 2.8","distinct":true,"url":"https://api.github.com/repos/peff/git/commits/9d4de1f0cb995171390ad99185bae1b0cbc1de70"},{"sha":"785cac1f8f1bdd256afd629c983ef73e2572ea89","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"t/perf-lib: factor boilerplate out of test_perf\n\nAbout half of test_perf() is boilerplate, and half is\nactually related to running the perf test. Let's split it\ninto two functions, so that we can reuse the boilerplate in\nfuture commits.","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/785cac1f8f1bdd256afd629c983ef73e2572ea89"},{"sha":"9a4dcdb373ace65d674f507320fe3136de504ee7","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"t/perf/aggregate: factor our percent calculations\n\nThis will let us reuse the code when we add new values to\naggregate besides times.","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/9a4dcdb373ace65d674f507320fe3136de504ee7"},{"sha":"6feac11bd7ed751076bc013821907bb1f8d83a6c","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"t/perf: add infrastructure for measuring sizes\n\nThe main objective of scripts in the perf framework is to\nrun \"test_perf\", which measures the time it takes to run\nsome operation. However, it can also be interesting to see\nthe change in the output size of certain operations.\n\nThis patch introduces test_size, which records a single\nnumeric output from the test and shows it in the aggregated\noutput (with pretty printing and relative size comparison).","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/6feac11bd7ed751076bc013821907bb1f8d83a6c"},{"sha":"dfb4314cec978a3354b83b41b5d69091edbbb241","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"upload-archive: restrict remote objects with reachability check\n\nWhen serving a remote request, git-upload-archive tries to\nrestrict access to unreachable objects, which matches the\nbehavior of upload-pack. However, we did so by restricting\nthe requested tree to \"<ref>[:<path>]\", because it is fast.\nThat covers the common cases, but does not allow requesting\nitems by a specific sha1 (either a tree or a commit sha1).\n\nInstead, let's do the correct-but-slower method of actually\nwalking back from the tips to see if the requested object is\nreachable. The performance impact of this is roughly:\n\n  1. For a recent commit, the speed is about the same (we\n     traverse in reverse chronological order, so we see it\n     almost immediately).\n\n  2. For an older commit, even one pointed at directly by a\n     ref (e.g., an old tag), we are slower, because we\n     traverse from the more recent tips. We are bounded in\n     this case by the time to look at all commits (i.e.,\n     \"time git rev-list --all\").\n\n  3. When we see \"$ref:$path\", we typically perform much\n     worse, because our traversal looks at all commits\n     first, followed by all trees.\n\n  4. The worst case (which we hit for an unreachable object)\n     is equivalent to \"time rev-list --objects --all\", which\n     is about the same amount of time pack-objects spends\n     preparing a full clone (which can be in the tens of\n     seconds for a large repository).\n\nThe implementation is a fairly straightforward application\nof the traverse_commit_list function. Using the\nmark_objects_reachable function would seem more appropriate,\nbut it has no mechanism for looking for a specific object,\nwhich lets us end the traversal early in common cases.","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/dfb4314cec978a3354b83b41b5d69091edbbb241"},{"sha":"2618b4214b2ea25091431c9c668395cb882d169e","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"t/perf: add perf tests for fetches from a bitmapped server\n\nA server with bitmapped packs can serve a clone very\nquickly. However, fetches are not necessarily made any\nfaster, because we spend a lot less time in object traversal\n(which is what bitmaps help with) and more time finding\ndeltas (because we may have to throw out on-disk deltas if\nthe client does not have the other side).\n\nAs a first step to making this faster, this patch introduces\na new perf script to measure fetches into a repo of various\nages from a fully-bitmapped server.\n\nWe separately measure the work done by the server (in\npack-objects) and that done by the client (in index-pack).\nFurthermore, we measure the size of the resulting pack.\n\nBreaking it down like this (instead of just doing a regular\n\"git fetch\") lets us see how much each side benefits from\nany changes. And since we know the pack size, if we estimate\nthe network speed, then we can calculate a complete\nwall-clock time for the operation.","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/2618b4214b2ea25091431c9c668395cb882d169e"},{"sha":"f79093b11607de7ad2f3098bededed125abaf985","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"list-objects: optimize \"revs->blob_objects = 0\" case\n\nIf we are traversing trees during a \"--objects\"\ntraversal, we may skip blobs if the \"blob_objects\" field of\nrev_info is not set. But we do so as the first thing in\nprocess_blob(), only after we have actually created the\n\"struct blob\" object, incurring a hash lookup. We can\noptimize out this no-op call completely.\n\nThis does not actually affect any current code, as all of\nthe current traversals always set blob_objects when looking\nat objects, anyway.","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/f79093b11607de7ad2f3098bededed125abaf985"},{"sha":"c29dbea4d8a0a5def69ecbe948d07126da1e9537","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"pack-bitmap: save \"have\" bitmap from walk\n\nWhen we do a bitmap walk, we save the result, which\nrepresents (WANTs & ~HAVEs); i.e., every object we care\nabout visiting in our walk. However, we throw away the\nhaves bitmap, which can sometimes be useful, too. Save it\nand provide an access function so code which has performed a\nwalk can query it.","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/c29dbea4d8a0a5def69ecbe948d07126da1e9537"},{"sha":"0f28cac6481767a95e4e822e93266d91a523c58d","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"archive: ignore blob objects when checking reachability\n\nWe cannot create an archive from a blob object, so we would\nnot expect anyone to provide one to us. And if they do, we\nwill fail anyway just after the reachability check.  We can\ntherefore optimize our reachability check to ignore blobs\ncompletely, and not even create a \"struct blob\" for them.\n\nDepending on the repository size and the exact place we find\nthe reachable object in the traversal, this can save 20-25%,\na we can avoid many lookups in the object hash.\n\nThe downside of this is that a blob provided to a remote\narchive process will fail with \"no such object\" rather than\n\"object is not a tree\" (we could organize the code to retain\nthe old message, but since we no longer know whether the\nblob is reachable or not, we would potentially be leaking\ninformation about the existence of unreachable objects).","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/0f28cac6481767a95e4e822e93266d91a523c58d"},{"sha":"0a073a1910640193ba1da6f374f5229542bc43f2","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"pack-objects: reuse deltas for thin \"have\" objects\n\nWhen we calculate the \"wants\" and \"haves\" for a pack, we\nonly add the objects in the boundary commits as preferred\nbases. However, we know that every object reachable from the\n\"haves\" could be a preferred base.\n\nWe probably don't want to add these to our preferred base\nlist, because they would clog the delta-search window.\nHowever, there is no reason we cannot reuse an on-disk delta\nagainst such a deep \"have\" base, avoiding the delta search\nfor that object altogether.","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/0a073a1910640193ba1da6f374f5229542bc43f2"},{"sha":"ddaa49961aef0e3ed3360886bf6619b3a6d2f24a","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"fast-export: allow ref-anonymizing to be disabled\n\nProbably all of the anonymized components should get their\nown bit to flip (blobs, paths, commit messages, etc). But\nrefs are probably the most important one, as it is otherwise\nvery hard to map commits from the original to the anonymized\nversion (and therefore to _find_ the commits that were\na problem in the first place!).\n\nSo this is a quick hack to turn off refname anonymizing. The\nsimplest way to use it is to point a tag directly to commits\nof interest in the original, which will then exist in the\noutput. But you could also use \"git describe\" to find\ncommits in relation to a ref in the original, which should\nthen carry forward to the output.","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/ddaa49961aef0e3ed3360886bf6619b3a6d2f24a"},{"sha":"e7e1858922cded682f69298d67189ab42e93a191","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"t5000: drop tag to supposedly unreachable object\n\nWe try to create an unreachable commit, but test_commit will\nretain a tag pointing to it. Oops.","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/e7e1858922cded682f69298d67189ab42e93a191"},{"sha":"3819ea8d8952bf1b8c525b738e3db0ac81b6ab38","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"preferred base reuse wip","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/3819ea8d8952bf1b8c525b738e3db0ac81b6ab38"},{"sha":"e1e0d8826e161097a7a715eb8c2654638dced7ce","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"wip -- better protection against corruption","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/e1e0d8826e161097a7a715eb8c2654638dced7ce"},{"sha":"39cc5edc96edcfb131d21b1149de5d56b04ab3de","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"check_everything_connected: use argv_array\n\nThis saves us from manually counting our array, and makes\nfurther refactoring simpler.","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/39cc5edc96edcfb131d21b1149de5d56b04ab3de"},{"sha":"5173a6fcdc04636615a161eeefef4853bfcfd0e9","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"create_branch: drop unused \"head\" parameter\n\nThis function used to have the caller pass in the current\nvalue of HEAD, in order to make sure we didn't clobber HEAD.\nIn 55c4a6730, that logic moved to validate_new_branchname(),\nwhich just resolves HEAD itself. The parameter to\ncreate_branch is now unused.\n\nSince we have to update and re-wrap the docstring describing\nthe parameters anyway, let's take this opportunity to break\nit out into a list, which makes it easier to find the\nparameters.","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/5173a6fcdc04636615a161eeefef4853bfcfd0e9"},{"sha":"ab073fae00f9e533d73787222995347e0152ec67","author":{"email":"5c355d1d38066ed0c5de420d67c1b5ed0687c4bd@gmail.com","name":"Ramkumar Ramachandra"},"message":".clang-format: introduce the use of clang-format\n\nInstead of manually eyeballing style in reviews, just ask all\ncontributors to run their patches through [git-]clang-format.\n\nHowever, struct declarations that are combined with variable\ndeclaration and initialization get mangled:\n\n        struct a {\n                int n;\n                const char *s;\n        } arr[] = {\n                { 1, \"one\" },\n                { 2, \"two\" }\n        };\n\nbecomes:\n\n        struct a {\n                int n;\n                const char *s;\n        } arr[] = { { 1, \"one\" }, { 2, \"two\" } };\n\nIt gets formatted better if arr is declared separately.\n\nHelped-by: René Scharfe <l.s.r@web.de>\nSigned-off-by: Ramkumar Ramachandra <artagnon@gmail.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/ab073fae00f9e533d73787222995347e0152ec67"},{"sha":"9a8e43e75811c640935ddc87348e38d7ab23f732","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"check_everything_connected: assume alternate ref tips are valid\n\nWhen we receive a remote ref update to sha1 \"X\", we want to\ncheck that we have all of the objects needed by \"X\". We can\nassume that our repository is not currently corrupted, and\ntherefore if we have a ref pointing at \"Y\", we have all of\nits objects.  We can therefore stop our traversal from \"X\"\nas soon as we hit \"Y\".\n\nIf we make the same non-corruption assumption about any\nrepositories we use to store alternates, then we can also\nuse their ref tips to shorten the traversal.\n\nThis is especially useful when cloning with \"--reference\",\nas we otherwise do not have any local refs to check against,\nand have to traverse the whole history, even though the\nother side may have sent us few or no objects.","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/9a8e43e75811c640935ddc87348e38d7ab23f732"},{"sha":"d2ffc3b4e356940c48ae55e71c1e6ede3d9d807f","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"checkout: pass resolved default HEAD to create_branch\n\n[TODO...]","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/d2ffc3b4e356940c48ae55e71c1e6ede3d9d807f"}]}