{"push_id":972547563,"size":164,"distinct_size":43,"ref":"refs/heads/private","head":"f5fcbd3a0fe0be9e3f030ca062358fed902c6a5b","before":"fd1d4e50ed21f530b3f4c3615054907fc82ccd41","commits":[{"sha":"d0a1cbccab54d828be2d83acc73f38c162962966","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'nd/do-not-move-worktree-manually'\n\n\"git worktree\" had a broken code that attempted to auto-fix\npossible inconsistency that results from end-users moving a\nworktree to different places without telling Git (the original\nrepository needs to maintain backpointers to its worktrees, but\n\"mv\" run by end-users who are not familiar with that fact will\nobviously not adjust them), which actually made things worse\nwhen triggered.\n\n* nd/do-not-move-worktree-manually:\n  worktree: stop supporting moving worktrees manually\n  worktree.c: fix indentation","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/d0a1cbccab54d828be2d83acc73f38c162962966"},{"sha":"81ad6a9c538bdbc24754cab577d8e480a8c5d012","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'js/xmerge-marker-eol'\n\nThe low-level merge machinery has been taught to use CRLF line\ntermination when inserting conflict markers to merged contents that\nare themselves CRLF line-terminated.\n\n* js/xmerge-marker-eol:\n  merge-file: ensure that conflict sections match eol style\n  merge-file: let conflict markers match end-of-line style of the context","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/81ad6a9c538bdbc24754cab577d8e480a8c5d012"},{"sha":"0e35fcb412965f855e5ac6f469343e2f8e28d5ae","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'cc/untracked'\n\nUpdate the untracked cache subsystem and change its primary UI from\n\"git update-index\" to \"git config\".\n\n* cc/untracked:\n  t7063: add tests for core.untrackedCache\n  test-dump-untracked-cache: don't modify the untracked cache\n  config: add core.untrackedCache\n  dir: simplify untracked cache \"ident\" field\n  dir: add remove_untracked_cache()\n  dir: add {new,add}_untracked_cache()\n  update-index: move 'uc' var declaration\n  update-index: add untracked cache notifications\n  update-index: add --test-untracked-cache\n  update-index: use enum for untracked cache options\n  dir: free untracked cache when removing it","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/0e35fcb412965f855e5ac6f469343e2f8e28d5ae"},{"sha":"fbf4bdfbf1ce543818363e7bc9286d73a61c0648","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'ew/connect-verbose'\n\nThere were a few \"now I am doing this thing\" progress messages in\nthe TCP connection code that can be triggered by setting a verbose\noption internally in the code, but \"git fetch -v\" and friends never\npassed the verbose option down to that codepath.\n\nThere was a brief discussion about the impact on the end-user\nexperience by not limiting this to \"fetch -v -v\", but I think the\nconclusion is that this is OK to enable with a single \"-v\" as it is\nnot too noisy.\n\n* ew/connect-verbose:\n  pass transport verbosity down to git_connect","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/fbf4bdfbf1ce543818363e7bc9286d73a61c0648"},{"sha":"a3764e7da7ae2c30e2e1bbeaa0961a17bced2078","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'ls/clean-smudge-override-in-config'\n\nClean/smudge filters defined in a configuration file of lower\nprecedence can now be overridden to be a pass-through no-op by\nsetting the variable to an empty string.\n\n* ls/clean-smudge-override-in-config:\n  convert: treat an empty string for clean/smudge filters as \"cat\"","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/a3764e7da7ae2c30e2e1bbeaa0961a17bced2078"},{"sha":"24abb31727e8e0b216bdee182dbbbbc43d134fa6","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'aw/push-force-with-lease-reporting'\n\n\"git push --force-with-lease\" has been taught to report if the push\nneeded to force (or fast-forwarded).\n\n* aw/push-force-with-lease-reporting:\n  push: fix ref status reporting for --force-with-lease","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/24abb31727e8e0b216bdee182dbbbbc43d134fa6"},{"sha":"722c9244452c1853f0592b22c331382c282768c7","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'jk/options-cleanup'\n\nVarious clean-ups to the command line option parsing.\n\n* jk/options-cleanup:\n  apply, ls-files: simplify \"-z\" parsing\n  checkout-index: disallow \"--no-stage\" option\n  checkout-index: handle \"--no-index\" option\n  checkout-index: handle \"--no-prefix\" option\n  checkout-index: simplify \"-z\" option parsing\n  give \"nbuf\" strbuf a more meaningful name","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/722c9244452c1853f0592b22c331382c282768c7"},{"sha":"fb795323ce3ce5a358f8e55641777b9cdbeab846","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'wp/sha1-name-negative-match'\n\nA new \"<branch>^{/!-<pattern>}\" notation can be used to name a\ncommit that is reachable from <branch> that does not match the\ngiven <pattern>.\n\n* wp/sha1-name-negative-match:\n  object name: introduce '^{/!-<negative pattern>}' notation\n  test for '!' handling in rev-parse's named commits","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/fb795323ce3ce5a358f8e55641777b9cdbeab846"},{"sha":"4ecc59aa427000fcd02325e067e178c15111c48a","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'js/test-lib-windows-emulated-yes'\n\nThe emulated \"yes\" command used in our test scripts has been\ntweaked not to spend too much time generating unnecessary output\nthat is not used, to help those who test on Windows where it would\nnot stop until it fills the pipe buffer due to lack of SIGPIPE.\n\n* js/test-lib-windows-emulated-yes:\n  test-lib: limit the output of the yes utility","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/4ecc59aa427000fcd02325e067e178c15111c48a"},{"sha":"494398473714dcbedb38b1ac79b531c7384b3bc4","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Sixth batch for the 2.8 cycle\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/494398473714dcbedb38b1ac79b531c7384b3bc4"},{"sha":"2a43f26564d6bd0a4b6e22f1cff975dc39c57f1e","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Sync with master","distinct":true,"url":"https://api.github.com/repos/peff/git/commits/2a43f26564d6bd0a4b6e22f1cff975dc39c57f1e"},{"sha":"3f42b6660982b3069f508098c6c501839c569f06","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/3f42b6660982b3069f508098c6c501839c569f06"},{"sha":"1250d64f13de5c475e577260dbacfe583b2238a6","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/1250d64f13de5c475e577260dbacfe583b2238a6"},{"sha":"a568499a4450bb739f99e2ea7fc0d8ab516c16d4","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/a568499a4450bb739f99e2ea7fc0d8ab516c16d4"},{"sha":"cd135ac2a45f8dabd8c9b2052a096591ae29477f","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/cd135ac2a45f8dabd8c9b2052a096591ae29477f"},{"sha":"afdedeb855fb41ce8848aee436ca8158bbb2c3ec","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/afdedeb855fb41ce8848aee436ca8158bbb2c3ec"},{"sha":"eca601c16fafd171cf32d1176b4ee8d30318346e","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/eca601c16fafd171cf32d1176b4ee8d30318346e"},{"sha":"4c8948a527dbb0e87bf69daf48fb636fb6331ea0","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/4c8948a527dbb0e87bf69daf48fb636fb6331ea0"},{"sha":"c9a4fa9aae36403e70a305db23f01ebad0e67a7a","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/c9a4fa9aae36403e70a305db23f01ebad0e67a7a"},{"sha":"d92d90b8664d9859ecbcfa874a2b99a3d0d1b37b","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/d92d90b8664d9859ecbcfa874a2b99a3d0d1b37b"}]}