{"push_id":2832520931,"size":56,"distinct_size":10,"ref":"refs/heads/next","head":"d3f39a7ffa57a0eeb4d1abcac230fab88756d1b4","before":"44030500cbe36d83d386ac118eee4688c0fa63ca","commits":[{"sha":"c8d521faf72590fd4cd9bab3d20eb3de139f69d5","author":{"name":"Jeff King","email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net"},"message":"Add delta-islands.{c,h}\n\nHosting providers that allow users to \"fork\" existing\nrepos want those forks to share as much disk space as\npossible.\n\nAlternates are an existing solution to keep all the\nobjects from all the forks into a unique central repo,\nbut this can have some drawbacks. Especially when\npacking the central repo, deltas will be created\nbetween objects from different forks.\n\nThis can make cloning or fetching a fork much slower\nand much more CPU intensive as Git might have to\ncompute new deltas for many objects to avoid sending\nobjects from a different fork.\n\nBecause the inefficiency primarily arises when an\nobject is deltified against another object that does\nnot exist in the same fork, we partition objects into\nsets that appear in the same fork, and define\n\"delta islands\". When finding delta base, we do not\nallow an object outside the same island to be\nconsidered as its base.\n\nSo \"delta islands\" is a way to store objects from\ndifferent forks in the same repo and packfile without\nhaving deltas between objects from different forks.\n\nThis patch implements the delta islands mechanism in\n\"delta-islands.{c,h}\", but does not yet make use of it.\n\nA few new fields are added in 'struct object_entry'\nin \"pack-objects.h\" though.\n\nThe documentation will follow in a patch that actually\nuses delta islands in \"builtin/pack-objects.c\".\n\nSigned-off-by: Jeff King <peff@peff.net>\nSigned-off-by: Christian Couder <chriscool@tuxfamily.org>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/szeder/git-cooking-topics-for-travis-ci/commits/c8d521faf72590fd4cd9bab3d20eb3de139f69d5"},{"sha":"f64ba53ee74b1ee2909d3804818b09481b3e64b2","author":{"name":"Christian Couder","email":"58cc993db606fd7043084d51c23db751557f1001@gmail.com"},"message":"pack-objects: refactor code into compute_layer_order()\n\nIn a following commit, as we will use delta islands, we will\nhave to compute the write order for different layers, not just\nfor one.\n\nLet's prepare for that by refactoring the code that will be\nused to compute the write order for a given layer into a new\ncompute_layer_order() function.\n\nThis will make it easier to see and understand what the\nfollowing changes are doing.\n\nHelped-by: Duy Nguyen <pclouds@gmail.com>\nSigned-off-by: Christian Couder <chriscool@tuxfamily.org>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/szeder/git-cooking-topics-for-travis-ci/commits/f64ba53ee74b1ee2909d3804818b09481b3e64b2"},{"sha":"28b8a7308018ac3eb2ae2b3fe2f05993cf20a689","author":{"name":"Jeff King","email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net"},"message":"pack-objects: add delta-islands support\n\nImplement support for delta islands in git pack-objects\nand document how delta islands work in\n\"Documentation/git-pack-objects.txt\" and Documentation/config.txt.\n\nThis allows users to setup delta islands in their config and\nget the benefit of less disk usage while cloning and fetching\nis still quite fast and not much more CPU intensive.\n\nSigned-off-by: Jeff King <peff@peff.net>\nSigned-off-by: Christian Couder <chriscool@tuxfamily.org>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/szeder/git-cooking-topics-for-travis-ci/commits/28b8a7308018ac3eb2ae2b3fe2f05993cf20a689"},{"sha":"16d75fa48d535ae3f19b221638989cac955f42fb","author":{"name":"Jeff King","email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net"},"message":"repack: add delta-islands support\n\nImplement simple support for --delta-islands option and\nrepack.useDeltaIslands config variable in git repack.\n\nThis allows users to setup delta islands in their config and\nget the benefit of less disk usage while cloning and fetching\nis still quite fast and not much more CPU intensive.\n\nSigned-off-by: Jeff King <peff@peff.net>\nSigned-off-by: Christian Couder <chriscool@tuxfamily.org>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/szeder/git-cooking-topics-for-travis-ci/commits/16d75fa48d535ae3f19b221638989cac955f42fb"},{"sha":"9eb0986fa0b417911ed126e0d6d12028b9c2044f","author":{"name":"Jeff King","email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net"},"message":"t5320: tests for delta islands\n\nSigned-off-by: Jeff King <peff@peff.net>\nSigned-off-by: Christian Couder <chriscool@tuxfamily.org>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/szeder/git-cooking-topics-for-travis-ci/commits/9eb0986fa0b417911ed126e0d6d12028b9c2044f"},{"sha":"108f530385e969feab343b2b8acadeb7bb670009","author":{"name":"Christian Couder","email":"58cc993db606fd7043084d51c23db751557f1001@gmail.com"},"message":"pack-objects: move tree_depth into 'struct packing_data'\n\nThis reduces the size of 'struct object_entry' and therefore\nmakes packing objects more efficient.\n\nThis also renames cmp_tree_depth() into tree_depth_compare(),\nas it is more modern to have the name of the compare functions\nend with \"compare\".\n\nHelped-by: Jeff King <peff@peff.net>\nHelped-by: Duy Nguyen <pclouds@gmail.com>\nSigned-off-by: Christian Couder <chriscool@tuxfamily.org>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/szeder/git-cooking-topics-for-travis-ci/commits/108f530385e969feab343b2b8acadeb7bb670009"},{"sha":"fe0ac2fb7f8e87d37ef83dcee2d93901d58d8277","author":{"name":"Christian Couder","email":"58cc993db606fd7043084d51c23db751557f1001@gmail.com"},"message":"pack-objects: move 'layer' into 'struct packing_data'\n\nThis reduces the size of 'struct object_entry' from 88 bytes\nto 80 and therefore makes packing objects more efficient.\n\nFor example on a Linux repo with 12M objects,\n`git pack-objects --all` needs extra 96MB memory even if the\nlayer feature is not used.\n\nHelped-by: Jeff King <peff@peff.net>\nHelped-by: Duy Nguyen <pclouds@gmail.com>\nSigned-off-by: Christian Couder <chriscool@tuxfamily.org>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/szeder/git-cooking-topics-for-travis-ci/commits/fe0ac2fb7f8e87d37ef83dcee2d93901d58d8277"},{"sha":"fa655d8411cc2d7ffcf898e53a1493c737d7de68","author":{"name":"Ben Peart","email":"644d5dae50408b431bda297e736dfa98f3c0fc63@microsoft.com"},"message":"checkout: optimize \"git checkout -b <new_branch>\"\n\nSkip merging the commit, updating the index and working directory if and\nonly if we are creating a new branch via \"git checkout -b <new_branch>.\"\nAny other checkout options will still go through the former code path.\n\nIf sparse_checkout is on, require the user to manually opt in to this\noptimzed behavior by setting the config setting checkout.optimizeNewBranch\nto true as we will no longer update the skip-worktree bit in the index, nor\nadd/remove files in the working directory to reflect the current sparse\ncheckout settings.\n\nFor comparison, running \"git checkout -b <new_branch>\" on a large repo takes:\n\n14.6 seconds - without this patch\n0.3 seconds - with this patch\n\nSigned-off-by: Ben Peart <Ben.Peart@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/szeder/git-cooking-topics-for-travis-ci/commits/fa655d8411cc2d7ffcf898e53a1493c737d7de68"},{"sha":"a12cbe23ef765e89ba5b0872f6330a693ea391d2","author":{"name":"Jeff King","email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net"},"message":"rev-list: make empty --stdin not an error\n\nWhen we originally did the series that contains 7ba826290a\n(revision: add rev_input_given flag, 2017-08-02) the intent\nwas that \"git rev-list --stdin </dev/null\" would similarly\nbecome a successful noop. However, an attempt at the time to\ndo that did not work[1]. The problem is that rev_input_given\nserves two roles:\n\n - it tells rev-list.c that it should not error out\n\n - it tells revision.c that it should not have the \"default\"\n   ref kick (e.g., \"HEAD\" in \"git log\")\n\nWe want to trigger the former, but not the latter. This is\ntechnically possible with a single flag, if we set the flag\nonly after revision.c's revs->def check. But this introduces\na rather subtle ordering dependency.\n\nInstead, let's keep two flags: one to denote when we got\nactual input (which triggers both roles) and one for when we\nread stdin (which triggers only the first).\n\nThis does mean a caller interested in the first role has to\ncheck both flags, but there's only one such caller. And any\nfuture callers might want to make the distinction anyway\n(e.g., if they care less about erroring out, and more about\nwhether revision.c soaked up our stdin).\n\nIn fact, we already keep such a flag internally in\nrevision.c for this purpose, so this is really just exposing\nthat to the caller (and the old function-local flag can go\naway in favor of our new one).\n\n[1] https://public-inbox.org/git/20170802223416.gwiezhbuxbdmbjzx@sigill.intra.peff.net/\n\nHelped-by: Junio C Hamano <gitster@pobox.com>\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/szeder/git-cooking-topics-for-travis-ci/commits/a12cbe23ef765e89ba5b0872f6330a693ea391d2"},{"sha":"0d2db00e24ee2df4459151c5ba6de9306e30e727","author":{"name":"Jeff King","email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net"},"message":"trailer: use size_t for string offsets\n\nMany of the string-parsing functions inside trailer.c return\ninteger offsets into the string (e.g., to point to the end\nof the trailer block). Several of these use an \"int\" to\nreturn or store the offsets. On a system where \"size_t\" is\nmuch larger than \"int\" (e.g., most 64-bit ones), it's easy\nto feed a gigantic commit message that results in a negative\noffset. This can result in us reading memory before the\nstring (if the int is used as an index) or far after (if\nit's implicitly cast to a size_t by passing to a strbuf\nfunction).\n\nLet's fix this by using size_t for all string offsets. Note\nthat several of the functions need ssize_t, since they use\n\"-1\" as a sentinel value. The interactions here can be\npretty subtle. E.g., end_of_title in find_trailer_start()\ndoes not itself need to be signed, but it is compared to the\nresult of last_line(), which is. That promotes the latter to\nunsigned, and the \">=\" does not behave as you might expect.\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/szeder/git-cooking-topics-for-travis-ci/commits/0d2db00e24ee2df4459151c5ba6de9306e30e727"},{"sha":"a3b636e21574e6cff1494e0a84644e06201ddb8d","author":{"name":"Jeff King","email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net"},"message":"trailer: use size_t for iterating trailer list\n\nWe store the length of the trailers list in a size_t. So on\na 64-bit system with a 32-bit int, in the unlikely case that\nwe manage to actually allocate a list with 2^31 entries,\nwe'd loop forever trying to iterate over it (our \"int\" would\nwrap to negative before exceeding info->trailer_nr).\n\nThis probably doesn't matter in practice. Each entry is at\nleast a pointer plus a non-empty string, so even without\nmalloc overhead or the memory to hold the original string\nwe're parsing from, you'd need to allocate tens of\ngigabytes. But it's easy enough to do it right.\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/szeder/git-cooking-topics-for-travis-ci/commits/a3b636e21574e6cff1494e0a84644e06201ddb8d"},{"sha":"00a21f5cbda35eb5d355b453849b625eeca7eac4","author":{"name":"Jeff King","email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net"},"message":"trailer: pass process_trailer_opts to trailer_info_get()\n\nMost of the trailer code has an \"opts\" struct which is\nfilled in by the caller. We don't pass it down to\ntrailer_info_get(), which does the initial parsing, because\nthere hasn't yet been a need to do so.\n\nLet's start passing it down in preparation for adding new\noptions. Note that there's a single caller which doesn't\notherwise have such an options struct. Since it's just one\ncaller (that we'd have to modify anyway), let's not bother\nwith any special treatment like accepting a NULL options\nstruct, and just have it allocate one with the defaults.\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/szeder/git-cooking-topics-for-travis-ci/commits/00a21f5cbda35eb5d355b453849b625eeca7eac4"},{"sha":"c188668e387509565237a865a1c63e890f6bbcd7","author":{"name":"Jeff King","email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net"},"message":"interpret-trailers: tighten check for \"---\" patch boundary\n\nThe interpret-trailers command accepts not only raw commit\nmessages, but it also can manipulate trailers in\nformat-patch output. That means it must find the \"---\"\nboundary separating the commit message from the patch.\nHowever, it does so by looking for any line starting with\n\"---\", regardless of whether there is further content.\n\nThis is overly lax compared to the parsing done in\nmailinfo.c's patchbreak(), and may cause false positives\n(e.g., t/perf output tables uses dashes; if you cut and\npaste them into your commit message, it fools the parser).\n\nWe could try to reuse patchbreak() here, but it actually has\nseveral heuristics that are not of interest to us (e.g.,\nmatching \"diff -\" without a three-dash separator or even a\nCVS \"Index:\" line). We're not interested in taking in\nwhatever random cruft people may send, but rather handling\ngit-formatted patches.\n\nNote that the existing documentation was written in a loose\nway, so technically we are changing the behavior from what\nit said. But this should implement the original intent in a\nmore accurate way.\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/szeder/git-cooking-topics-for-travis-ci/commits/c188668e387509565237a865a1c63e890f6bbcd7"},{"sha":"1688c9a4894df517241026c7a3848bdc84607986","author":{"name":"Jeff King","email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net"},"message":"interpret-trailers: allow suppressing \"---\" divider\n\nEven with the newly-tightened \"---\" parser, it's still\npossible for a commit message to trigger a false positive if\nit contains something like \"--- foo\". If the caller knows\nthat it has only a single commit message, it can now tell us\nwith the \"--no-divider\" option, eliminating any false\npositives.\n\nIf we were designing this from scratch, I'd probably make\nthis the default. But we've advertised the \"---\" behavior in\nthe documentation since interpret-trailers has existed.\nSince it's meant to be scripted, breaking that would be a\nbad idea.\n\nNote that the logic is in the underlying trailer.c code,\nwhich is used elsewhere. The default there will keep the\ncurrent behavior, but many callers will benefit from setting\nthis new option. That's left for future patches.\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/szeder/git-cooking-topics-for-travis-ci/commits/1688c9a4894df517241026c7a3848bdc84607986"},{"sha":"e5fba5d55886eaf48aeeb158dd4d30c2fc0294c9","author":{"name":"Jeff King","email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net"},"message":"pretty, ref-filter: format %(trailers) with no_divider option\n\nIn both of these cases we know that we are feeding the\ntrailer-parsing code a pure commit message. We should tell\nit so, which avoids false positives for a commit message\nthat contains a \"---\" line.\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/szeder/git-cooking-topics-for-travis-ci/commits/e5fba5d55886eaf48aeeb158dd4d30c2fc0294c9"},{"sha":"ffce7f590fabee6f2314ffd891f1fd3629222839","author":{"name":"Jeff King","email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net"},"message":"sequencer: ignore \"---\" divider when parsing trailers\n\nWhen the sequencer code appends a signoff or cherry-pick\norigin, it uses the default trailer-parsing options, which\ntreat \"---\" as the end of the commit message. As a result,\nit may be fooled by a commit message that contains that\nstring and fail to find the existing trailer block. Even\nmore confusing, the actual append code does not know about\n\"---\", and always appends to the end of the string. This can\nlead to bizarre results. E.g., appending a signoff to a\ncommit message like this:\n\n  subject\n\n  body\n  ---\n  these dashes confuse the parser!\n\n  Signed-off-by: A\n\nresults in output with a final block like:\n\n  Signed-off-by: A\n\n  Signed-off-by: A\n\nThe parser thinks the final line of the message is \"body\",\nand ignores everything else, claiming there are no trailers.\nSo we output an extra newline separator (wrong) and add a\nduplicate signoff (also wrong).\n\nSince we know we are feeding a pure commit message, we can\nsimply tell the parser to ignore the \"---\" divider.\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/szeder/git-cooking-topics-for-travis-ci/commits/ffce7f590fabee6f2314ffd891f1fd3629222839"},{"sha":"66e83d9b41f7438cb167b9bb54093ebbf0532437","author":{"name":"Jeff King","email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net"},"message":"append_signoff: use size_t for string offsets\n\nThe append_signoff() function takes an \"int\" to specify the\nnumber of bytes to ignore. Most callers just pass 0, and the\nremainder use ignore_non_trailer() to skip over cruft.\nThat function also returns an int, and uses them internally.\n\nOn systems where size_t is larger than an int (i.e., most\n64-bit systems), dealing with a ridiculously large commit\nmessage could end up overflowing an int, producing\nsurprising results (e.g., returning a negative offset, which\nwould cause us to look outside the original string).\n\nLet's consistently use size_t for these offsets through this\nwhole stack. As a bonus, this makes the meaning of\n\"ignore_footer\" as an offset (and not a boolean) more clear.\nBut while we're here, let's also document the interface.\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/szeder/git-cooking-topics-for-travis-ci/commits/66e83d9b41f7438cb167b9bb54093ebbf0532437"},{"sha":"2a59a6ef2066c786b69253e148cccdc92cfdb434","author":{"name":"Ævar Arnfjörð Bjarmason","email":"0135fcc047f75af264c800977a73e353c6ba842d@gmail.com"},"message":"tests: fix and add lint for non-portable head -c N\n\nThe \"head -c BYTES\" option is non-portable (not in POSIX[1]). Change\nsuch invocations to use the test_copy_bytes wrapper added in\n48860819e8 (\"t9300: factor out portable \"head -c\" replacement\",\n2016-06-30).\n\nThis fixes a test added in 9d2e330b17 (\"ewah_read_mmap: bounds-check\nmmap reads\", 2018-06-14), which has been breaking\nt5310-pack-bitmaps.sh on OpenBSD since 2.18.0. The OpenBSD ports\nalready have a similar workaround after their upgrade to 2.18.0[2].\n\nI have not tested this on IRIX, but according to 4de0bbd898 (\"t9300:\nuse perl \"head -c\" clone in place of \"dd bs=1 count=16000\" kluge\",\n2010-12-13) this invocation would have broken things there too.\n\nAlso, change a valgrind-specific codepath in test-lib.sh to use this\nwrapper. Given where valgrind runs I don't think this would ever\nbecome a portability issue in practice, but it's easier to just use\nthe wrapper than introduce some exception for the \"make test-lint\"\ncheck being added here.\n\n1. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/head.html\n2. https://github.com/openbsd/ports/commit/08d5d82eaefe5cf2f125ecc0c6a57df9cf91350c#diff-f7d3c4fabeed1691620d608f1534f5e5\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/szeder/git-cooking-topics-for-travis-ci/commits/2a59a6ef2066c786b69253e148cccdc92cfdb434"},{"sha":"b2fa7a2372f42af404a942a4691a5341af8868e9","author":{"name":"Ævar Arnfjörð Bjarmason","email":"0135fcc047f75af264c800977a73e353c6ba842d@gmail.com"},"message":"tests: fix and add lint for non-portable seq\n\nThe seq command is not in POSIX, and doesn't exist on\ne.g. OpenBSD. We've had the test_seq wrapper since d17cf5f3a3 (\"tests:\nIntroduce test_seq\", 2012-08-04), but use of it keeps coming back,\ne.g. in the recently added \"fetch negotiator\" tests being added here.\n\nSo let's also add a check to \"make test-lint\". The regex is aiming to\ncapture the likes of $(seq ..) and \"seq\" as a stand-alone command,\nwithout capturing some existing cases where we e.g. have files called\n\"seq\", as \\bseq\\b would do.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/szeder/git-cooking-topics-for-travis-ci/commits/b2fa7a2372f42af404a942a4691a5341af8868e9"},{"sha":"2d9ded8accda2f32868516ddbe17b5ea323477a3","author":{"name":"Ævar Arnfjörð Bjarmason","email":"0135fcc047f75af264c800977a73e353c6ba842d@gmail.com"},"message":"tests: fix comment syntax in chainlint.sed for AIX sed\n\nChange a comment in chainlint.sed to appease AIX sed, which would\npreviously print this error:\n\n    sed:    # stash for later printing is not a recognized function\n\n1. https://public-inbox.org/git/CAPig+cTTbU5HFMKgNyrxTp3+kcK46-Fn=4ZH6zDt1oQChAc3KA@mail.gmail.com/\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\nAcked-by: Eric Sunshine <sunshine@sunshineco.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/szeder/git-cooking-topics-for-travis-ci/commits/2d9ded8accda2f32868516ddbe17b5ea323477a3"}]}
{"actor":{"display_login":"szeder"}}