{"push_id":3068254968,"size":16,"distinct_size":6,"ref":"refs/heads/next","head":"68bc7959f8dc2d629c09be1a52f1b95b977b3a13","before":"c7a69e6b6c9a35941419cec7b616a8623048e1da","commits":[{"sha":"7e097e27d3a9a5a8517d8ed139dcfdb1a21fd87a","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"legacy-rebase: backport -C<n> and --whitespace=<option> checks\n\nSince 04519d720114 (rebase: validate -C<n> and --whitespace=<mode>\nparameters early, 2018-11-14), the built-in rebase validates the -C and\n--whitespace arguments early. As this commit also introduced a\nregression test for this, and as a later commit introduced the\nGIT_TEST_REBASE_USE_BUILTIN mode to run tests, we now have a\n\"regression\" in the scripted version of `git rebase` on our hands.\n\nBackport the validation to fix this.\n\nReported-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/7e097e27d3a9a5a8517d8ed139dcfdb1a21fd87a"},{"sha":"d8465500c3d5ced194585eea05b2a6dccfaa6366","author":{"name":"Jonathan Nieder","email":"b57189c5f2fd5b3daf3350a77fde90def1080fa5@gmail.com"},"message":"eoie: default to not writing EOIE section\n\nSince 3b1d9e04 (eoie: add End of Index Entry (EOIE) extension,\n2018-10-10) Git defaults to writing the new EOIE section when writing\nout an index file.  Usually that is a good thing because it improves\nthreaded performance, but when a Git repository is shared with older\nversions of Git, it produces a confusing warning:\n\n  $ git status\n  ignoring EOIE extension\n  HEAD detached at 371ed0defa\n  nothing to commit, working tree clean\n\nLet's introduce the new index extension more gently.  First we'll roll\nout the new version of Git that understands it, and then once\nsufficiently many users are using such a version, we can flip the\ndefault to writing it by default.\n\nIntroduce a '[index] recordEndOfIndexEntries' configuration variable\nto allow interested users to benefit from this index extension early.\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/d8465500c3d5ced194585eea05b2a6dccfaa6366"},{"sha":"429160544db9cc0cf748cdc98b21bd3533ec85a3","author":{"name":"Jonathan Nieder","email":"b57189c5f2fd5b3daf3350a77fde90def1080fa5@gmail.com"},"message":"ieot: default to not writing IEOT section\n\nAs with EOIE, popular versions of Git do not support the new IEOT\nextension yet.  When accessing a Git repository written by a more\nmodern version of Git, they correctly ignore the unrecognized section,\nbut in the process they loudly warn\n\n\tignoring IEOT extension\n\nresulting in confusion for users.  Introduce the index extension more\ngently by not writing it yet in this first version with support for\nit.  Soon, once sufficiently many users are running a modern version\nof Git, we can flip the default so users benefit from this index\nextension by default.\n\nIntroduce a '[index] recordOffsetTable' configuration variable to\ncontrol whether the new index extension is written.\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/429160544db9cc0cf748cdc98b21bd3533ec85a3"},{"sha":"4d86503eed995fe27bfa284b55fc63328534d11b","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"rebase: warn about the correct tree's OID\n\nThis was a simple copy/paste error, and an obvious one at that: if we\ncannot fill the tree descriptor, we should show an error message about\n*that* tree, not another one.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/4d86503eed995fe27bfa284b55fc63328534d11b"},{"sha":"bc35ac1a6a844fc3484833afee41260e1d47042e","author":{"name":"Jeff King","email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net"},"message":"pack-objects: fix tree_depth and layer invariants\n\nCommit 108f530385 (pack-objects: move tree_depth into 'struct\npacking_data', 2018-08-16) dynamically manages a tree_depth array in\npacking_data that maintains one of these invariants:\n\n  1. tree_depth is NULL (i.e., the requested options don't require us to\n     track tree depths)\n\n  2. tree_depth is non-NULL and has as many entries as the \"objects\"\n     array\n\nWe maintain (2) by:\n\n  a. When the objects array grows, grow tree_depth to the same size\n     (unless it's NULL, in which case we can leave it).\n\n  b. When a caller asks to set a depth via oe_set_tree_depth(), if\n     tree_depth is NULL we allocate it.\n\nBut in (b), we use the number of stored objects, _not_ the allocated\nsize of the objects array. So we can run into a situation like this:\n\n  1. packlist_alloc() needs to store the Nth object, so it grows the\n     objects array to M, where M > N.\n\n  2. oe_set_tree_depth() wants to store a depth, so it allocates an\n     array of length N. Now we've violated our invariant.\n\n  3. packlist_alloc() needs to store the N+1th object. But it _doesn't_\n     grow the objects array, since N <= M still holds. We try to assign\n     to tree_depth[N+1], which is out of bounds.\n\nThat doesn't happen in our test scripts, because the repositories they\nuse are so small, but it's easy to trigger by running:\n\n  echo HEAD | git pack-objects --revs --delta-islands --stdout >/dev/null\n\nin any reasonably-sized repo (like git.git).\n\nWe can fix it by always growing the array to match pack->nr_alloc, not\npack->nr_objects. Likewise for the \"layer\" array from fe0ac2fb7f\n(pack-objects: move 'layer' into 'struct packing_data', 2018-08-16),\nwhich has the same bug.\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/gitster/git/commits/bc35ac1a6a844fc3484833afee41260e1d47042e"},{"sha":"e159b8107190aa53b27f9f106e5874597106eb88","author":{"name":"Jeff King","email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net"},"message":"pack-objects: zero-initialize tree_depth/layer arrays\n\nCommit 108f530385 (pack-objects: move tree_depth into 'struct\npacking_data', 2018-08-16) started maintaining a tree_depth array that\nmatches the \"objects\" array. We extend the array when:\n\n  1. The objects array is extended, in which case we use realloc to\n     extend the tree_depth array.\n\n  2. A caller asks to store a tree_depth for object N, and this is the\n     first such request; we create the array from scratch and store the\n     value for N.\n\nIn the latter case, though, we use regular xmalloc(), and the depth\nvalues for any objects besides N is undefined. This happens to not\ntrigger a bug with the current code, but the reasons are quite subtle:\n\n - we never ask about the depth for any object with index i < N. This is\n   because we store the depth immediately for all trees and blobs. So\n   any such \"i\" must be a non-tree, and therefore we will never need to\n   care about its depth (in fact, we really only care about the depth of\n   trees).\n\n - there are no objects at this point with index i > N, because we\n   always fill in the depth for a tree immediately after its object\n   entry is created (we may still allocate uninitialized depth entries,\n   but they'll be initialized by packlist_alloc() when it initializes\n   the entry in the \"objects\" array).\n\nSo it works, but only by chance. To be defensive, let's zero the array,\nwhich matches the \"unset\" values which would be handed out by\noe_tree_depth() already.\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/gitster/git/commits/e159b8107190aa53b27f9f106e5874597106eb88"},{"sha":"3949053617652693b659a933a1393f8be189f26a","author":{"name":"Jeff King","email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net"},"message":"pack-objects: fix off-by-one in delta-island tree-depth computation\n\nWhen delta-islands are in use, we need to record the deepest path at\nwhich we find each tree and blob. Our loop to do so counts slashes, so\n\"foo\" is depth 0, \"foo/bar\" is depth 1, and so on.\n\nHowever, this neglects root trees, which are represented by the empty\nstring. Those also have depth 0, but are at a layer above \"foo\". Thus,\n\"foo\" should be 1, \"foo/bar\" at 2, and so on. We use this depth to\ntopo-sort the trees in resolve_tree_islands(). As a result, we may fail\nto visit a root tree before the sub-trees it contains, and therefore not\ncorrectly pass down the island marks.\n\nThat in turn could lead to missing some delta opportunities (objects are\nin the same island, but we didn't realize it) or creating unwanted\ncross-island deltas (one object is in an island another isn't, but we\ndon't realize). In practice, it seems to have only a small effect.  Some\nexperiments on the real-world git/git fork network at GitHub showed an\nimprovement of only 0.14% in the resulting clone size.\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/gitster/git/commits/3949053617652693b659a933a1393f8be189f26a"},{"sha":"6056817879e4e3ef78c8fa4e8aeda76f124dbc2e","author":{"name":"Todd Zullinger","email":"ef20ee0e31e0ea2e6153df3c6a7c131757c7c986@pobox.com"},"message":"Documentation: build technical/multi-pack-index\n\nThe git-multi-pack-index doc links to technical/multi-pack-index.html.\nEnsure it is built to prevent a broken link.\n\nSigned-off-by: Todd Zullinger <tmz@pobox.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/6056817879e4e3ef78c8fa4e8aeda76f124dbc2e"},{"sha":"e66ceca94b6137dd73cab8b19ba8c890a0055544","author":{"name":"Nguyễn Thái Ngọc Duy","email":"024f400cd820cb2ddbe54c7fecfd01e45f30bb96@gmail.com"},"message":"clone: fix colliding file detection on APFS\n\nCommit b878579ae7 (clone: report duplicate entries on case-insensitive\nfilesystems - 2018-08-17) adds a warning to user when cloning a repo\nwith case-sensitive file names on a case-insensitive file system. The\n\"find duplicate file\" check was doing by comparing inode number (and\nonly fall back to fspathcmp() when inode is known to be unreliable\nbecause fspathcmp() can't cover all case folding cases).\n\nThe inode check is very simple, and wrong. It compares between a\n32-bit number (sd_ino) and potentially a 64-bit number (st_ino). When\nan inode is larger than 2^32 (which seems to be the case for APFS), it\nwill be truncated and stored in sd_ino, but comparing with itself will\nfail.\n\nAs a result, instead of showing a pair of files that have the same\nname, we show just one file (marked before the beginning of the\nloop). We fail to find the original one.\n\nThe fix could be just a simple type cast (*)\n\n    dup->ce_stat_data.sd_ino == (unsigned int)st->st_ino\n\nbut this is no longer a reliable test, there are 4G possible inodes\nthat can match sd_ino because we only match the lower 32 bits instead\nof full 64 bits.\n\nThere are two options to go. Either we ignore inode and go with\nfspathcmp() on Apple platform. This means we can't do accurate inode\ncheck on HFS anymore, or even on APFS when inode numbers are still\nbelow 2^32.\n\nOr we just to to reduce the odds of matching a wrong file by checking\nmore attributes, counting mostly on st_size because st_xtime is likely\nthe same. This patch goes with this direction, hoping that false\npositive chances are too small to be seen in practice.\n\nWhile at there, enable the test on Cygwin (verified working by Ramsay\nJones)\n\n(*) this is also already done inside match_stat_data()\n\nReported-by: Carlo Arenas <carenas@gmail.com>\nHelped-by: Ramsay Jones <ramsay@ramsayjones.plus.com>\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/e66ceca94b6137dd73cab8b19ba8c890a0055544"},{"sha":"2a9dedef2ef76916be4a314a7e739f253eaf05db","author":{"name":"Jonathan Nieder","email":"b57189c5f2fd5b3daf3350a77fde90def1080fa5@gmail.com"},"message":"index: make index.threads=true enable ieot and eoie\n\nIf a user explicitly sets\n\n\t[index]\n\t\tthreads = true\n\nto read the index using multiple threads, ensure that index writes\ninclude the offset table by default to make that possible.  This\nensures that the user's intent of turning on threading is respected.\n\nIn other words, permit the following configurations:\n\n- index.threads and index.recordOffsetTable unspecified: do not write\n  the offset table yet (to avoid alarming the user with \"ignoring IEOT\n  extension\" messages when an older version of Git accesses the\n  repository) but do make use of multiple threads to read the index if\n  the supporting offset table is present.\n\n  This can also be requested explicitly by setting index.threads=true,\n  0, or >1 and index.recordOffsetTable=false.\n\n- index.threads=false or 1: do not write the offset table, and do not\n  make use of the offset table.\n\n  One can set index.recordOffsetTable=false as well, to be more\n  explicit.\n\n- index.threads=true, 0, or >1 and index.recordOffsetTable unspecified:\n  write the offset table and make use of threads at read time.\n\n  This can also be requested by setting index.threads=true, 0, >1, or\n  unspecified and index.recordOffsetTable=true.\n\nFortunately the complication is temporary: once most Git installations\nhave upgraded to a version with support for the IEOT and EOIE\nextensions, we can flip the defaults for index.recordEndOfIndexEntries\nand index.recordOffsetTable to true and eliminate the settings.\n\nHelped-by: Ben Peart <benpeart@microsoft.com>\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/2a9dedef2ef76916be4a314a7e739f253eaf05db"},{"sha":"9c351cfc4ada499f838c5d125a03d1b2c3ceb2e7","author":{"name":"Junio C Hamano","email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com"},"message":"Merge branch 'js/builtin-rebase-perf-fix-err-fix' into next\n\n* js/builtin-rebase-perf-fix-err-fix:\n  rebase: warn about the correct tree's OID","distinct":true,"url":"https://api.github.com/repos/gitster/git/commits/9c351cfc4ada499f838c5d125a03d1b2c3ceb2e7"},{"sha":"4da85e17c249ae4d766c8f7de79896d7e5e2ce97","author":{"name":"Junio C Hamano","email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com"},"message":"Merge branch 'js/rebase-am-options-fix' into next\n\n* js/rebase-am-options-fix:\n  legacy-rebase: backport -C<n> and --whitespace=<option> checks","distinct":true,"url":"https://api.github.com/repos/gitster/git/commits/4da85e17c249ae4d766c8f7de79896d7e5e2ce97"},{"sha":"3bac399f83dd6b27fd7ffb39e906e4ebeee9b78b","author":{"name":"Junio C Hamano","email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com"},"message":"Merge branch 'cc/delta-islands' into next\n\n* cc/delta-islands:\n  pack-objects: fix off-by-one in delta-island tree-depth computation\n  pack-objects: zero-initialize tree_depth/layer arrays\n  pack-objects: fix tree_depth and layer invariants","distinct":true,"url":"https://api.github.com/repos/gitster/git/commits/3bac399f83dd6b27fd7ffb39e906e4ebeee9b78b"},{"sha":"9eb98a38f0812ee1656168dfd15cfd9079438d8b","author":{"name":"Junio C Hamano","email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com"},"message":"Merge branch 'jn/eoie-ieot' into next\n\n* jn/eoie-ieot:\n  index: make index.threads=true enable ieot and eoie\n  ieot: default to not writing IEOT section\n  eoie: default to not writing EOIE section","distinct":true,"url":"https://api.github.com/repos/gitster/git/commits/9eb98a38f0812ee1656168dfd15cfd9079438d8b"},{"sha":"15dd462db0c6d4e2e56c01664b6ceb3b49436903","author":{"name":"Junio C Hamano","email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com"},"message":"Merge branch 'tz/build-tech-midx-doc' into next\n\n* tz/build-tech-midx-doc:\n  Documentation: build technical/multi-pack-index","distinct":true,"url":"https://api.github.com/repos/gitster/git/commits/15dd462db0c6d4e2e56c01664b6ceb3b49436903"},{"sha":"68bc7959f8dc2d629c09be1a52f1b95b977b3a13","author":{"name":"Junio C Hamano","email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com"},"message":"Merge branch 'nd/clone-case-smashing-warning' into next\n\n* nd/clone-case-smashing-warning:\n  clone: fix colliding file detection on APFS","distinct":true,"url":"https://api.github.com/repos/gitster/git/commits/68bc7959f8dc2d629c09be1a52f1b95b977b3a13"}]}
{"actor":{"display_login":"gitster"}}