{"push_id":767134583,"size":71,"distinct_size":1,"ref":"refs/heads/pt/old-mailinfo","head":"7b5d44cb1cab873e85539ac83f933b62a9d5c0be","before":"3e612f95a8f8ea52272c482c5da3712423e31520","commits":[{"sha":"53c76dc05e0b5ad5b1f92db9577694e896d67a0a","author":{"email":"b1c1d8736f20db3fb6c1c66bb1455ed43909f0d8@ikke.info","name":"Kevin Daudt"},"message":"pull: allow dirty tree when rebase.autostash enabled\n\nrebase learned to stash changes when it encounters a dirty work tree,\nbut git pull --rebase does not.\n\nOnly verify if the working tree is dirty when rebase.autostash is not\nenabled.\n\nSigned-off-by: Kevin Daudt <me@ikke.info>\nSigned-off-by: Paul Tan <pyokagan@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/pyokagan/git/commits/53c76dc05e0b5ad5b1f92db9577694e896d67a0a"},{"sha":"da4c5adae95558c314eef41c1520f5ded08e221b","author":{"email":"b96f12d19241f1371541468c8d1241e042cc5b4c@arcor.de","name":"Thomas Ackermann"},"message":"typofix for index-format.txt\n\nSigned-off-by: Thomas Ackermann <th.acker@arcor.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/pyokagan/git/commits/da4c5adae95558c314eef41c1520f5ded08e221b"},{"sha":"cc118a65b4590cc2d669679260bad7ca627f2a30","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"docs/config.txt: reorder hideRefs config\n\nThe descriptions for receive.hideRefs and\nuploadpack.hideRefs are largely the same, and then\ntransfer.hideRefs refers to both of them. Instead, let's\nmake transfer.hideRefs the \"master\" source, and refer to it\nfrom the other sites (with appropriate program-specific\nannotations).\n\nThis avoids duplication, and will make it easier to document\nchanges to the config option without having to copy and\npaste the description in two places.\n\nWhile we're at it, this fixes some bogus subject/verb\nagreement in the original description.\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/pyokagan/git/commits/cc118a65b4590cc2d669679260bad7ca627f2a30"},{"sha":"c26f7d7b268c14f9ee7fa9cbeaad3bc890526d49","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"get_remote_group(): handle remotes with single-character names\n\nThe code for splitting a whitespace-separated list of values in\n\"remotes.<name>\" had an off-by-one error that caused it to skip over\nremotes whose names consist of a single character.\n\nAlso remove unnecessary braces.\n\nSigned-off-by: Michael Haggerty <mhagger@alum.mit.edu>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/pyokagan/git/commits/c26f7d7b268c14f9ee7fa9cbeaad3bc890526d49"},{"sha":"e286542de0c27e2c53d9a1ec44897dbef5de80dc","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"get_remote_group(): rename local variable \"space\" to \"wordlen\"\n\nSigned-off-by: Michael Haggerty <mhagger@alum.mit.edu>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/pyokagan/git/commits/e286542de0c27e2c53d9a1ec44897dbef5de80dc"},{"sha":"5f65499fa281748421f2ae65cd794533ada4b4de","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"get_remote_group(): eliminate superfluous call to strcspn()\n\nThere is no need to call it if value is the empty string. This also\neliminates code duplication.\n\nSigned-off-by: Michael Haggerty <mhagger@alum.mit.edu>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/pyokagan/git/commits/5f65499fa281748421f2ae65cd794533ada4b4de"},{"sha":"bc598c32ae41cd355169ca7b207c2e35d9449232","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"get_remote_group(): use skip_prefix()\n\nSigned-off-by: Michael Haggerty <mhagger@alum.mit.edu>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/pyokagan/git/commits/bc598c32ae41cd355169ca7b207c2e35d9449232"},{"sha":"22d6857d46de7ca28445c40782ba87a66416790d","author":{"email":"d4d2cc2a6ec7b2aa587d4887cc5ed200f9b685a1@imag.fr","name":"Matthieu Moy"},"message":"pull.sh: quote $upload_pack when passing it to git-fetch\n\nThe previous code broke for example\n\n  git pull --upload-pack 'echo --foo'\n\nReported-by: Joey Hess <id@joeyh.name>\nFix-suggested-by: Junio C Hamano <gitster@pobox.com>\nSigned-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/pyokagan/git/commits/22d6857d46de7ca28445c40782ba87a66416790d"},{"sha":"7687252f3f7def11a862a0fd118c531ee630bd05","author":{"email":"a13b1135e6f2f8530e85bc2896cd5ed89a6ed863@twopensource.com","name":"David Turner"},"message":"untracked-cache: support sparse checkout\n\nRemove a check that would disable the untracked cache for sparse\ncheckouts.  Add tests that ensure that the untracked cache works with\nsparse checkouts -- specifically considering the case that a file\nfoo/bar is checked out, but foo/.gitignore is not.\n\nSigned-off-by: David Turner <dturner@twopensource.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/pyokagan/git/commits/7687252f3f7def11a862a0fd118c531ee630bd05"},{"sha":"ae25fd39bc6fdc3457976c8d3398aa0fda352f97","author":{"email":"a7f3b1612c245dae606b3b9617b4f52187fddb65@google.com","name":"Stefan Beller"},"message":"transport-helper: die on errors reading refs.\n\nWe check the return value of read_ref in 19 out of 21 cases.\nThis adds checks to the missing cases.\n\nSigned-off-by: Stefan Beller <sbeller@google.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/pyokagan/git/commits/ae25fd39bc6fdc3457976c8d3398aa0fda352f97"},{"sha":"24ca45f64cf90a91597a94c85a11a69d030e0389","author":{"email":"c67f1ee17880030ce11821dcc9be7af90b863d9b@pks.im","name":"Patrick Steinhardt"},"message":"tests: fix broken && chains in t1509-root-worktree\n\nSigned-off-by: Patrick Steinhardt <ps@pks.im>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/pyokagan/git/commits/24ca45f64cf90a91597a94c85a11a69d030e0389"},{"sha":"faacc5aa7c3d9c0695bf0203b55c4fd77cd5cda3","author":{"email":"c67f1ee17880030ce11821dcc9be7af90b863d9b@pks.im","name":"Patrick Steinhardt"},"message":"tests: fix cleanup after tests in t1509-root-worktree\n\nDuring cleanup we do a simple 'rm /*' to remove leftover files\nfrom previous tests. As 'rm' errors out when there is anything it\ncannot delete and there are directories present at '/' it will\nthrow an error, causing the '&&' chain to fail.\n\nFix this by explicitly removing the files.\n\nSigned-off-by: Patrick Steinhardt <ps@pks.im>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/pyokagan/git/commits/faacc5aa7c3d9c0695bf0203b55c4fd77cd5cda3"},{"sha":"09bb6520d416a0d0d91ca646dae2d23d91c95ba8","author":{"email":"7000841a8f021c99d1bd30c7d450f7fe199f5032@virtuell-zuhause.de","name":"Thomas Braun"},"message":"completion: offer '--edit-todo' during interactive rebase\n\nHelped-by: John Keeping <john@keeping.me.uk>\nHelped-by: SZEDER Gábor <szeder@ira.uka.de>\nSigned-off-by: Thomas Braun <thomas.braun@virtuell-zuhause.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/pyokagan/git/commits/09bb6520d416a0d0d91ca646dae2d23d91c95ba8"},{"sha":"2bc31d1631229d863376d48ef84eb846fea1df02","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"refs: support negative transfer.hideRefs\n\nIf you hide a hierarchy of refs using the transfer.hideRefs\nconfig, there is no way to later override that config to\n\"unhide\" it. This patch implements a \"negative\" hide which\ncauses matches to immediately be marked as unhidden, even if\nanother match would hide it. We take care to apply the\nmatches in reverse-order from how they are fed to us by the\nconfig machinery, as that lets our usual \"last one wins\"\nconfig precedence work (and entries in .git/config, for\nexample, will override /etc/gitconfig).\n\nSo you can now do:\n\n  $ git config --system transfer.hideRefs refs/secret\n  $ git config transfer.hideRefs '!refs/secret/not-so-secret'\n\nto hide refs/secret in all repos, except for one public bit\nin one specific repo. Or you can even do:\n\n  $ git clone \\\n      -u \"git -c transfer.hiderefs=\"!refs/foo\" upload-pack\" \\\n      remote:repo.git\n\nto clone remote:repo.git, overriding any hiding it has\nconfigured.\n\nThere are two alternatives that were considered and\nrejected:\n\n  1. A generic config mechanism for removing an item from a\n     list. E.g.: (e.g., \"[transfer] hideRefs -= refs/foo\").\n\n     This is nice because it could apply to other\n     multi-valued config, as well. But it is not nearly as\n     flexible. There is no way to say:\n\n       [transfer]\n       hideRefs = refs/secret\n       hideRefs = refs/secret/not-so-secret\n\n     Having explicit negative specifications means we can\n     override previous entries, even if they are not the\n     same literal string.\n\n  2. Adding another variable to override some parts of\n     hideRefs (e.g., \"exposeRefs\").\n\n     This solves the problem from alternative (1), but it\n     cannot easily obey the normal config precedence,\n     because it would use two separate lists. For example:\n\n       [transfer]\n       hideRefs = refs/secret\n       exposeRefs = refs/secret/not-so-secret\n       hideRefs = refs/secret/not-so-secret/no-really-its-secret\n\n     With two lists, we have to apply the \"expose\" rules\n     first, and only then apply the \"hide\" rules. But that\n     does not match what the above config intends.\n\n     Of course we could internally parse that to a single\n     list, respecting the ordering, which saves us having to\n     invent the new \"!\" syntax. But using a single name\n     communicates to the user that the ordering _is_\n     important. And \"!\" is well-known for negation, and\n     should not appear at the beginning of a ref (it is\n     actually valid in a ref-name, but all entries here\n     should be fully-qualified, starting with \"refs/\").\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/pyokagan/git/commits/2bc31d1631229d863376d48ef84eb846fea1df02"},{"sha":"2a01ef8ca31ab1cb889485ba8d9a20c7ba7ab54f","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"test-lib: turn off \"-x\" tracing during chain-lint check\n\nNow that GIT_TEST_CHAIN_LINT is on by default, running:\n\n    ./t0000-basic.sh -x --verbose-only=1\n\nstarts with:\n\n    expecting success:\n            find .git/objects -type f -print >should-be-empty &&\n            test_line_count = 0 should-be-empty\n\n    + exit 117\n    error: last command exited with $?=117\n    + find .git/objects -type f -print\n    + test_line_count = 0 should-be-empty\n    + test 3 != 3\n    + wc -l\n    + test 0 = 0\n    ok 1 - .git/objects should be empty after git init in an empty repo\n\nThis is confusing, as the \"exit 117\" line and the error line\n(which is printed in red, no less!) are not part of the test\nat all, but are rather in the separate chain-lint test_eval.\nLet's unset the \"trace\" variable when eval-ing the chain\nlint check, which avoids this.\n\nNote that we cannot just do a one-shot variable like:\n\n    trace= test_eval ...\n\nas the behavior of one-shot variables for function calls\nis not portable.\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/pyokagan/git/commits/2a01ef8ca31ab1cb889485ba8d9a20c7ba7ab54f"},{"sha":"9b5fe78b343d2416e5c6da28fa80303957aec371","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"test-lib: disable trace when test is not verbose\n\nThe \"-x\" test-script option turns on the shell's \"-x\"\ntracing, which can help show why a particular test is\nfailing. Unfortunately, this can create false negatives in\nsome tests if they invoke a shell function with its stderr\nredirected. t5512.10 is such a test, as it does:\n\n    test_must_fail git ls-remote refs*master >actual 2>&1 &&\n    test_cmp exp actual\n\nThe \"actual\" file gets the \"-x\" trace for the test_must_fail\nfunction, which prevents it from matching the expected\noutput.\n\nThere's no way to avoid this without managing the\ntrace flag inside each sub-function, which isn't really a\nworkable solution. But unless you specifically care about\nt5512.10, we can work around it by enabling tracing only for\nthe specific tests we want.\n\nYou can already do:\n\n    ./t5512-ls-remote.sh -x --verbose-only=16\n\nto see the trace only for a specific test. But that doesn't\n_disable_ the tracing in the other tests; it just sends it\nto /dev/null. However, there's no point in generating a\ntrace that the user won't see, so we can simply disable\ntracing whenever it doesn't have a matching verbose flag.\n\nThe normal case of just \"./t5512-ls-remote.sh -x\" stays the\nsame, as \"-x\" already implies \"--verbose\" (and\n\"--verbose-only\" overrides \"--verbose\", which is why this\nworks at all). And for our test, we need only check\n$verbose, as maybe_setup_verbose will have already\nset that flag based on the $verbose_only list).\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/pyokagan/git/commits/9b5fe78b343d2416e5c6da28fa80303957aec371"},{"sha":"d6a31e08cd300d8085af799ff9fe16b5963caab7","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"clone: add tests for output directory\n\nWhen we run \"git clone $url\", clone guesses from the $url\nwhat to name the local output directory. We don't have any\ntest coverage of this, so let's add some basic tests.\n\nThis reveals a few problems:\n\n  - cloning \"foo.git/\" does not properly remove the \".git\";\n    this is a recent regression from 7e837c6 (clone:\n    simplify string handling in guess_dir_name(), 2015-07-09)\n\n  - likewise, cloning foo/.git does not seem to handle the\n    bare case (we should end up in foo.git, but we try to\n    use foo/.git on the local end), which also comes from\n    7e837c6.\n\n  - cloning the root is not very smart about URL parsing,\n    and usernames and port numbers may end up in the\n    directory name\n\nAll of these tests are marked as failures.\n\nSigned-off-by: Jeff King <peff@peff.net>\nSigned-off-by: Patrick Steinhardt <ps@pks.im>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/pyokagan/git/commits/d6a31e08cd300d8085af799ff9fe16b5963caab7"},{"sha":"db2e220447f7b02278d64417c8f05f73710f5b8b","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"clone: use computed length in guess_dir_name\n\nCommit 7e837c6 (clone: simplify string handling in\nguess_dir_name(), 2015-07-09) changed clone to use\nstrip_suffix instead of hand-rolled pointer manipulation.\nHowever, strip_suffix will strip from the end of a\nNUL-terminated string, and we may have already stripped some\ncharacters (like directory separators, or \"/.git\"). This\nleads to commands like:\n\n  git clone host:foo.git/\n\nfailing to strip the \".git\".\n\nWe must instead convert our pointer arithmetic into a\ncomputed length and feed that to strip_suffix_mem, which will\nthen reduce the length further for us.\n\nIt would be nicer if we could drop the pointer manipulation\nentirely, and just continually strip using strip_suffix. But\nthat doesn't quite work for two reasons:\n\n  1. The early suffixes we're stripping are not constant; we\n     need to look for is_dir_sep, which could be one of\n     several characters.\n\n  2. Mid-way through the stripping we compute the pointer\n     \"start\", which shows us the beginning of the pathname.\n     Which really give us two lengths to work with: the\n     offset from the start of the string, and from the start\n     of the path. By using pointers for the early part, we\n     can just compute the length from \"start\" when we need\n     it.\n\nSigned-off-by: Jeff King <peff@peff.net>\nAcked-by: Sebastian Schuberth <sschuberth@gmail.com>\nSigned-off-by: Patrick Steinhardt <ps@pks.im>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/pyokagan/git/commits/db2e220447f7b02278d64417c8f05f73710f5b8b"},{"sha":"e895986727dfc4105c497132540dafa8ed51ec0a","author":{"email":"c67f1ee17880030ce11821dcc9be7af90b863d9b@pks.im","name":"Patrick Steinhardt"},"message":"clone: do not include authentication data in guessed dir\n\nIf the URI contains authentication data and the URI's path\ncomponent is empty, we fail to guess a sensible directory name.\nE.g. cloning a repository 'ssh://user:password@example.com/' we\nguess a directory name 'password@example.com' where we would want\nthe hostname only, e.g. 'example.com'.\n\nThe naive way of just adding '@' as a path separator would break\ncloning repositories like 'foo/bar@baz.git' (which would\ncurrently become 'bar@baz' but would then become 'baz' only).\nInstead fix this by first dropping the scheme and then greedily\nscanning for an '@' sign until we find the first path separator.\n\nSigned-off-by: Patrick Steinhardt <ps@pks.im>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/pyokagan/git/commits/e895986727dfc4105c497132540dafa8ed51ec0a"},{"sha":"92722efec01f67a54b68c83fcbc3cd65f9fbb7b8","author":{"email":"c67f1ee17880030ce11821dcc9be7af90b863d9b@pks.im","name":"Patrick Steinhardt"},"message":"clone: do not use port number as dir name\n\nIf the URI contains a port number and the URI's path component is\nempty we fail to guess a sensible directory name. E.g. cloning a\nrepository 'ssh://example.com:2222/' we guess a directory name\n'2222' where we would want the hostname only, e.g. 'example.com'.\n\nWe need to take care to not drop trailing port-like numbers in\ncertain cases. E.g. when cloning a repository 'foo/bar:2222.git'\nwe want to guess the directory name '2222' instead of 'bar'.\nThus, we have to first check the stripped URI for path separators\nand only strip port numbers if there are path separators present.\nThis heuristic breaks when cloning a repository 'bar:2222.git',\nthough.\n\nSigned-off-by: Patrick Steinhardt <ps@pks.im>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/pyokagan/git/commits/92722efec01f67a54b68c83fcbc3cd65f9fbb7b8"}]}