{"push_id":1138102061,"size":20,"distinct_size":0,"ref":"refs/heads/jk/check-alternate-connectedness","head":"f080de923cddebf19cb8a1c3d32b351a91f4d639","before":"6b98d9294a12d153c9f3594509a1abc368ba9424","commits":[{"sha":"d66f68ff985f494f3122ab05b532c6e41884ad64","author":{"name":"Eric Sunshine","email":"661f189b99516ecb8f2ba0bb72325631e4bc3599@sunshineco.com"},"message":"t1500: be considerate to future potential tests\n\nThe final batch of git-rev-parse tests work against a non-local object\ndatabase named repo.git. This is done by renaming .git to repo.git and\npointing GIT_DIR at it, but the name is never restored to .git at the\nend of the script, which can be problematic for tests added in the\nfuture. Be more friendly by instead making repo.git a copy of .git.\n\nFurthermore, make it clear that tests in repo.git will be independent\nfrom the results of earlier tests done in .git by initializing repo.git\nearlier in the test sequence.\n\nLikewise, bundle remaining preparation (such as directory creation) into\na common setup test consistent with modern practice.\n\nSigned-off-by: Eric Sunshine <sunshine@sunshineco.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/d66f68ff985f494f3122ab05b532c6e41884ad64"},{"sha":"f4beed60d5ef3fdbd31ac5bd3162182fdf2bf0d3","author":{"name":"Felipe Contreras","email":"fcb4e957a8a939b4cf8e55a0f6dfe15a91f2dc5c@gmail.com"},"message":"fast-import: do not truncate exported marks file\n\nCertain lines of the marks file might be corrupted (or the objects\nmissing due to a garbage collection), but that's no reason to truncate\nthe file and essentially destroy the rest of it.\n\nIdeally missing objects should not cause a crash, we could just skip\nthem, but that's another patch.\n\nSigned-off-by: Felipe Contreras <felipe.contreras@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/f4beed60d5ef3fdbd31ac5bd3162182fdf2bf0d3"},{"sha":"12f7526c66547ced1b670f5c0faeec5120fc9c7a","author":{"name":"Eric Sunshine","email":"661f189b99516ecb8f2ba0bb72325631e4bc3599@sunshineco.com"},"message":"t1500: test_rev_parse: facilitate future test enhancements\n\nTests run by test_rev_parse() are nearly identical; each invokes\ngit-rev-parse with a single option and compares the result against an\nexpected value. Such duplication makes it onerous to extend the tests\nsince any change needs to be repeated in each test. Avoid the\nduplication by parameterizing the test and driving it via a for-loop.\n\nSigned-off-by: Eric Sunshine <sunshine@sunshineco.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/12f7526c66547ced1b670f5c0faeec5120fc9c7a"},{"sha":"1e043cff7815786b3d1a4c07bac63b3d8e1e30ef","author":{"name":"Eric Sunshine","email":"661f189b99516ecb8f2ba0bb72325631e4bc3599@sunshineco.com"},"message":"t1500: avoid changing working directory outside of tests\n\nIdeally, each test should be responsible for setting up state it needs\nrather than relying upon transient global state. Toward this end, teach\ntest_rev_parse() to accept a \"-C <dir>\" option to allow callers to\ninstruct it explicitly in which directory its tests should be run. Take\nadvantage of this new option to avoid changing the working directory\noutside of tests.\n\nImplementation note: test_rev_parse() passes \"-C <dir>\" along to\ngit-rev-parse with <dir> properly quoted. The natural and POSIX way to\ndo so is via ${dir:+-C \"$dir\"}, however, with some older broken shells,\nthis expression evaluates incorrectly to a single argument (\"-C <dir>\")\nrather than the expected two (-C and \"<dir>\"). Work around this problem\nwith the slightly ungainly expression: ${dir:+-C} ${dir:+\"$dir\"}\n\nSigned-off-by: Eric Sunshine <sunshine@sunshineco.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/1e043cff7815786b3d1a4c07bac63b3d8e1e30ef"},{"sha":"1dea0dc9e0965e2581cdf64fc9eb072e8d6a88d3","author":{"name":"Eric Sunshine","email":"661f189b99516ecb8f2ba0bb72325631e4bc3599@sunshineco.com"},"message":"t1500: avoid setting configuration options outside of tests\n\nIdeally, each test should be responsible for setting up state it needs\nrather than relying upon transient global state. Toward this end, teach\ntest_rev_parse() to accept a \"-b <value>\" option to allow callers to set\n\"core.bare\" explicitly or undefine it. Take advantage of this new option\nto avoid setting \"core.bare\" outside of tests.\n\nUnder the hood, \"-b <value>\" invokes \"test_config -C <dir>\" (or\n\"test_unconfig -C <dir>\"), thus git-config knows explicitly where to\nfind its configuration file. Consequently, the global GIT_CONFIG\nenvironment variable required by the manual git-config invocations\noutside of tests is no longer needed, and is thus dropped.\n\nSigned-off-by: Eric Sunshine <sunshine@sunshineco.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/1dea0dc9e0965e2581cdf64fc9eb072e8d6a88d3"},{"sha":"e6273f4da51287363137a24200dd43b87c801b3d","author":{"name":"Eric Sunshine","email":"661f189b99516ecb8f2ba0bb72325631e4bc3599@sunshineco.com"},"message":"t1500: avoid setting environment variables outside of tests\n\nIdeally, each test should be responsible for setting up state it needs\nrather than relying upon transient global state. Toward this end, teach\ntest_rev_parse() to accept a \"-g <dir>\" option to allow callers to\nspecify the value of the GIT_DIR environment variable explicitly. Take\nadvantage of this new option to avoid polluting the global scope with\nGIT_DIR assignments.\n\nImplementation note: Typically, tests avoid polluting the global state\nby wrapping transient environment variable assignments within a\nsubshell, however, this technique doesn't work here since test_config()\nand test_unconfig() need to know GIT_DIR, as well, but neither function\ncan be used within a subshell. Consequently, GIT_DIR is instead cleared\nmanually via test_when_finished().\n\nSigned-off-by: Eric Sunshine <sunshine@sunshineco.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/e6273f4da51287363137a24200dd43b87c801b3d"},{"sha":"845de33a5b2c9efb7761d091f1475ec89c25798a","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"message":"cat-file: avoid noop calls to sha1_object_info_extended\n\nIt is not unreasonable to ask cat-file for a batch-check\nformat of simply \"%(objectname)\". At first glance this seems\nlike a noop (you are generally already feeding the object\nnames on stdin!), but it has a few uses:\n\n  1. With --batch-all-objects, you can generate a listing of\n     the sha1s present in the repository, without any input.\n\n  2. You do not have to feed sha1s; you can feed arbitrary\n     sha1 expressions and have git resolve them en masse.\n\n  3. You can even feed a raw sha1, with the result that git\n     will tell you whether we actually have the object or\n     not.\n\nIn case 3, the call to sha1_object_info is useful; it tells\nus whether the object exists or not (technically we could\nswap this out for has_sha1_file, but the cost is roughly the\nsame).\n\nIn case 2, the existence check is of debatable value. A\nmass-resolution might prefer performance to safety (against\noutputting a value for a corrupted ref, for example).\nHowever, the object lookup cost is likely not as noticeable\ncompared to the resolution cost. And since we have provided\nthat safety in the past, the conservative choice is to keep\nit.\n\nIn case 1, though, the object lookup is a definite noop; we\nknow about the object because we found it in the object\ndatabase. There is no new information gained by making the\ncall.\n\nThis patch detects that case and optimizes out the call.\nHere are best-of-five timings for linux.git:\n\n  [before]\n  $ time git cat-file --buffer \\\n                      --batch-all-objects \\\n                      --batch-check='%(objectname)'\n  real    0m2.117s\n  user    0m2.044s\n  sys     0m0.072s\n\n  [after]\n  $ time git cat-file --buffer \\\n                      --batch-all-objects \\\n                      --batch-check='%(objectname)'\n  real    0m1.230s\n  user    0m1.176s\n  sys     0m0.052s\n\nThere are two implementation details to note here.\n\nOne is that we detect the noop case by seeing that \"struct\nobject_info\" does not request any information. But besides\nobject existence, there is one other piece of information\nwhich sha1_object_info may fill in: whether the object is\ncached, loose, or packed. We don't currently provide that\ninformation in the output, but if we were to do so later,\nwe'd need to take note and disable the optimization in that\ncase.\n\nAnd that leads to the second note. If we were to output\nthat information, a better implementation would be to\nremember where we saw the object in --batch-all-objects in\nthe first place, and avoid looking it up again by sha1.\n\nIn fact, we could probably squeeze out some extra\nperformance for less-trivial cases, too, by remembering the\npack location where we saw the object, and going directly\nthere to find its information (like type, size, etc). That\nwould in theory make this optimization unnecessary.\n\nI didn't pursue that path here for two reasons:\n\n  1. It's non-trivial to implement, and has memory\n     implications. Because we sort and de-dup the list of\n     output sha1s, we'd have to record the pack information\n     for each object, too.\n\n  2. It doesn't save as much as you might hope. It saves the\n     find_pack_entry() call, but getting the size and type\n     for deltified objects requires walking down the delta\n     chain (for the real type) or reading the delta data\n     header (for the size). These costs tend to dominate the\n     non-trivial cases.\n\nBy contrast, this optimization is easy and self-contained,\nand speeds up a real-world case I've used.\n\nSigned-off-by: Jeff King <peff@peff.net>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/845de33a5b2c9efb7761d091f1475ec89c25798a"},{"sha":"6a36e1e7bb64726cc712259aff57179d81361b5d","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"message":"cat-file: default to --buffer when --batch-all-objects is used\n\nTraditionally cat-file's batch-mode does not do any output\nbuffering. The reason is that a caller may have pipes\nconnected to its input and output, and would want to use\ncat-file interactively, getting output immediately for each\ninput it sends.\n\nThis may involve a lot of small write() calls, which can be\nslow. So we introduced --buffer to improve this, but we\ncan't turn it on by default, as it would break the\ninteractive case above.\n\nHowever, when --batch-all-objects is used, we do not read\nstdin at all. We generate the output ourselves as quickly as\npossible, and then exit. In this case buffering is a strict\nwin, and it is simply a hassle for the user to have to\nremember to specify --buffer.\n\nThis patch makes --buffer the default when --batch-all-objects\nis used. Specifying \"--buffer\" manually is still OK, and you\ncan even override it with \"--no-buffer\" if you're a\nmasochist (or debugging).\n\nFor some real numbers, running:\n\n  git cat-file --batch-all-objects --batch-check='%(objectname)'\n\non torvalds/linux goes from:\n\n  real    0m1.464s\n  user    0m1.208s\n  sys     0m0.252s\n\nto:\n\n  real    0m1.230s\n  user    0m1.172s\n  sys     0m0.056s\n\nfor a 16% speedup.\n\nSuggested-by: Charles Bailey <charles@hashpling.org>\nSigned-off-by: Jeff King <peff@peff.net>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/6a36e1e7bb64726cc712259aff57179d81361b5d"},{"sha":"bc4b9247df12e668b93cca85d6a5415e6b007368","author":{"name":"Junio C Hamano","email":"3228067b6039a0d99bddaf967dafdecd5cc61600@pobox.com"},"message":"Merge branch 'fc/fast-import-broken-marks-file'\n\n\"git fast-import --export-marks\" would overwrite the existing marks\nfile even when it makes a dump from its custom die routine.\nPrevent it from doing so when we have an import-marks file but\nhaven't finished reading it.\n\n* fc/fast-import-broken-marks-file:\n  fast-import: do not truncate exported marks file","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/bc4b9247df12e668b93cca85d6a5415e6b007368"},{"sha":"628991391dc7fd7a07772546de8e43684439aa73","author":{"name":"Junio C Hamano","email":"3228067b6039a0d99bddaf967dafdecd5cc61600@pobox.com"},"message":"Merge branch 'jk/cat-file-buffered-batch-all'\n\n\"git cat-file --batch-all\" has been sped up, by taking advantage\nof the fact that it does not have to read a list of objects, in two\nways.\n\n* jk/cat-file-buffered-batch-all:\n  cat-file: default to --buffer when --batch-all-objects is used\n  cat-file: avoid noop calls to sha1_object_info_extended","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/628991391dc7fd7a07772546de8e43684439aa73"},{"sha":"39fbe92248a7f312a1aec07eb5f9fcd735bb814b","author":{"name":"Junio C Hamano","email":"3228067b6039a0d99bddaf967dafdecd5cc61600@pobox.com"},"message":"Merge branch 'es/t1500-modernize'\n\ntest updates to make it more readable and maintainable.\n\n* es/t1500-modernize:\n  t1500: avoid setting environment variables outside of tests\n  t1500: avoid setting configuration options outside of tests\n  t1500: avoid changing working directory outside of tests\n  t1500: test_rev_parse: facilitate future test enhancements\n  t1500: be considerate to future potential tests","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/39fbe92248a7f312a1aec07eb5f9fcd735bb814b"},{"sha":"9ee8f9409cab2a52e133c63bdd0acce24f99e73f","author":{"name":"Junio C Hamano","email":"3228067b6039a0d99bddaf967dafdecd5cc61600@pobox.com"},"message":"Merge branch 'js/name-rev-use-oldest-ref' into maint\n\n\"git describe --contains\" often made a hard-to-justify choice of\ntag to give name to a given commit, because it tried to come up\nwith a name with smallest number of hops from a tag, causing an old\ncommit whose close descendant that is recently tagged were not\ndescribed with respect to an old tag but with a newer tag.  It did\nnot help that its computation of \"hop\" count was further tweaked to\npenalize being on a side branch of a merge.  The logic has been\nupdated to favor using the tag with the oldest tagger date, which\nis a lot easier to explain to the end users: \"We describe a commit\nin terms of the (chronologically) oldest tag that contains the\ncommit.\"\n\n* js/name-rev-use-oldest-ref:\n  name-rev: include taggerdate in considering the best name","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/9ee8f9409cab2a52e133c63bdd0acce24f99e73f"},{"sha":"68a6e976a821ebf2b3766efb167fa716cbf8c188","author":{"name":"Junio C Hamano","email":"3228067b6039a0d99bddaf967dafdecd5cc61600@pobox.com"},"message":"Merge branch 'jk/test-send-sh-x-trace-elsewhere' into maint\n\nRunning tests with '-x' option to trace the individual command\nexecutions is a useful way to debug test scripts, but some tests\nthat capture the standard error stream and check what the command\nsaid can be broken with the trace output mixed in.  When running\nour tests under \"bash\", however, we can redirect the trace output\nto another file descriptor to keep the standard error of programs\nbeing tested intact.\n\n* jk/test-send-sh-x-trace-elsewhere:\n  test-lib: set BASH_XTRACEFD automatically","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/68a6e976a821ebf2b3766efb167fa716cbf8c188"},{"sha":"e646a82ce2828d6e8e3a18fe02dd9b3d31478f00","author":{"name":"Junio C Hamano","email":"3228067b6039a0d99bddaf967dafdecd5cc61600@pobox.com"},"message":"Merge branch 'bn/http-cookiefile-config' into maint\n\n\"http.cookieFile\" configuration variable clearly wants a pathname,\nbut we forgot to treat it as such by e.g. applying tilde expansion.\n\n* bn/http-cookiefile-config:\n  http: expand http.cookieFile as a path\n  Documentation: config: improve word ordering for http.cookieFile","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/e646a82ce2828d6e8e3a18fe02dd9b3d31478f00"},{"sha":"3296e1a93a4540e083ffe28710d3601da95f06b5","author":{"name":"Junio C Hamano","email":"3228067b6039a0d99bddaf967dafdecd5cc61600@pobox.com"},"message":"Merge branch 'sb/submodule-deinit-all' into maint\n\nCorrect faulty recommendation to use \"git submodule deinit .\" when\nde-initialising all submodules, which would result in a strange\nerror message in a pathological corner case.\n\n* sb/submodule-deinit-all:\n  submodule deinit: require '--all' instead of '.' for all submodules","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/3296e1a93a4540e083ffe28710d3601da95f06b5"},{"sha":"4b0891ffe4ec3aef081cf48c5f9a747586076f7a","author":{"name":"Junio C Hamano","email":"3228067b6039a0d99bddaf967dafdecd5cc61600@pobox.com"},"message":"More topics for 2.8.4\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/4b0891ffe4ec3aef081cf48c5f9a747586076f7a"},{"sha":"257f6f404bbb90512262dbb6f7f873a61bf381dc","author":{"name":"Junio C Hamano","email":"3228067b6039a0d99bddaf967dafdecd5cc61600@pobox.com"},"message":"Merge branch 'maint'\n\n* maint:\n  More topics for 2.8.4","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/257f6f404bbb90512262dbb6f7f873a61bf381dc"},{"sha":"60bd4b1c513bb652cdffad44382046ca872140eb","author":{"name":"Junio C Hamano","email":"3228067b6039a0d99bddaf967dafdecd5cc61600@pobox.com"},"message":"Git 2.9-rc1\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/60bd4b1c513bb652cdffad44382046ca872140eb"},{"sha":"cc561f559e927c8b6879a80b92e17a47b220d30b","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"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/cc561f559e927c8b6879a80b92e17a47b220d30b"},{"sha":"f080de923cddebf19cb8a1c3d32b351a91f4d639","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"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/f080de923cddebf19cb8a1c3d32b351a91f4d639"}]}
{"actor":{"display_login":"peff"}}