{"push_id":3026586133,"size":49,"distinct_size":5,"ref":"refs/heads/jk/faster-blame-tree-wip","head":"c0e30f1a2e275e80522d28b44cd9977fc2e0cc40","before":"5ea33110c62b9909da1386a38cf360abbd897416","commits":[{"sha":"e0a862fdaf7628ceba4ea290b91ffd5d3c46b75b","author":{"name":"Stefan Beller","email":"a7f3b1612c245dae606b3b9617b4f52187fddb65@google.com"},"message":"submodule helper: convert relative URL to absolute URL if needed\n\nThe submodule helper update_clone called by \"git submodule update\",\nclones submodules if needed. As submodules used to have the URL indicating\nif they were active, the step to resolve relative URLs was done in the\n\"submodule init\" step. Nowadays submodules can be configured active without\ncalling an explicit init, e.g. via configuring submodule.active.\n\nWhen trying to obtain submodules that are set active this way, we'll\nfallback to the URL found in the .gitmodules, which may be relative to the\nsuperproject, but we do not resolve it, yet:\n\n    git clone https://gerrit.googlesource.com/gerrit\n    cd gerrit && grep url .gitmodules\n\turl = ../plugins/codemirror-editor\n\t...\n    git config submodule.active .\n    git submodule update\n    fatal: repository '../plugins/codemirror-editor' does not exist\n    fatal: clone of '../plugins/codemirror-editor' into submodule path '/tmp/gerrit/plugins/codemirror-editor' failed\n    Failed to clone 'plugins/codemirror-editor'. Retry scheduled\n    [...]\n    fatal: clone of '../plugins/codemirror-editor' into submodule path '/tmp/gerrit/plugins/codemirror-editor' failed\n    Failed to clone 'plugins/codemirror-editor' a second time, aborting\n    [...]\n\nTo resolve the issue, factor out the function that resolves the relative\nURLs in \"git submodule init\" (in the submodule helper in the init_submodule\nfunction) and call it at the appropriate place in the update_clone helper.\n\nReported-by: Jaewoong Jung <jungjw@google.com>\nSigned-off-by: Stefan Beller <sbeller@google.com>\nReviewed-by: Jonathan Nieder <jrnieder@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/e0a862fdaf7628ceba4ea290b91ffd5d3c46b75b"},{"sha":"0b9333ff3ee172669dc3da51afa5fc0aa8e1b114","author":{"name":"Jonathan Tan","email":"a1f160b521cd973a24f632d654869fc52afb36fa@google.com"},"message":"upload-pack: make have_obj not global\n\nBecause upload_pack_v2() can be invoked multiple times in the same\nprocess, the static variable have_obj may not be empty when it is\ninvoked. To make further analysis of this situation easier, make the\nvariable local; analysis will be done in a subsequent patch.\n\nThe new local variable in upload_pack_v2() is static to preserve\nexisting behavior; this is not necessary in upload_pack() because\nupload_pack() is only invoked once per process.\n\nSigned-off-by: Jonathan Tan <jonathantanmy@google.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/0b9333ff3ee172669dc3da51afa5fc0aa8e1b114"},{"sha":"1d1243fe6328db9b2b045afee9357ab7c6c515f1","author":{"name":"Jonathan Tan","email":"a1f160b521cd973a24f632d654869fc52afb36fa@google.com"},"message":"upload-pack: make want_obj not global\n\nBecause upload_pack_v2() can be invoked multiple times in the same\nprocess, the static variable want_obj may not be empty when it is\ninvoked. To make further analysis of this situation easier, make the\nvariable local; analysis will be done in a subsequent patch.\n\nThe new local variable in upload_pack_v2() is static to preserve\nexisting behavior; this is not necessary in upload_pack() because\nupload_pack() is only invoked once per process.\n\nSigned-off-by: Jonathan Tan <jonathantanmy@google.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/1d1243fe6328db9b2b045afee9357ab7c6c515f1"},{"sha":"d1035cac09602590578f70fb0294e97daf03769c","author":{"name":"Jonathan Tan","email":"a1f160b521cd973a24f632d654869fc52afb36fa@google.com"},"message":"upload-pack: clear flags before each v2 request\n\nSuppose a server has the following commit graph:\n\n A   B\n  \\ /\n   O\n\nWe create a client by cloning A from the server with depth 1, and add\nmany commits to it (so that future fetches span multiple requests due to\nlengthy negotiation). If it then fetches B using protocol v2, the fetch\nspanning multiple requests, the resulting packfile does not contain O\neven though the client did report that A is shallow.\n\nThis is because upload_pack_v2() can be called multiple times while\nprocessing the same session. During the 2nd and all subsequent\ninvocations, some object flags remain from the previous invocations. In\nparticular, CLIENT_SHALLOW remains, preventing process_shallow() from\nadding client-reported shallows to the \"shallows\" array, and hence\npack-objects not knowing about these client-reported shallows.\n\nTherefore, teach upload_pack_v2() to clear object flags at the start of\neach invocation. This has some other results:\n\n - THEY_HAVE gates addition of objects to have_obj in process_haves().\n   Previously in upload_pack_v2(), have_obj needed to be static because\n   once an object is added to have_obj, it is never readded and thus we\n   needed to retain the contents of have_obj between invocations. Now\n   that flags are cleared, this is no longer necessary. This patch does\n   not change the behavior of ok_to_give_up() (THEY_HAVE is still set on\n   each \"have\") and got_oid() (used only in non-v2)); THEY_HAVE is not\n   used in any other function.\n\n - WANTED gates addition of objects to want_obj in parse_want() and\n   parse_want_ref(). It is also used in receive_needs(), but that is\n   only used in non-v2. For the same reasons as THEY_HAVE, want_obj no\n   longer needs to be static in upload_pack_v2().\n\n - CLIENT_SHALLOW is changed as discussed above.\n\nClearing of the other 5 flags does not affect functionality in v2. (Note\nthat in non-v2, upload_pack() is only called once per process, so each\ninvocation starts with blank flags anyway.)\n\n - OUR_REF is only used in non-v2.\n\n - COMMON_KNOWN is only used as a scratch flag in ok_to_give_up().\n\n - SHALLOW is passed to invocations in deepen() and\n   deepen_by_rev_list(), but upload-pack doesn't use it.\n\n - NOT_SHALLOW is used by send_shallow() and send_unshallow(), but\n   invocations of those functions are always preceded by code that sets\n   NOT_SHALLOW on the appropriate objects.\n\n - HIDDEN_REF is only used in non-v2.\n\nSigned-off-by: Jonathan Tan <jonathantanmy@google.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/d1035cac09602590578f70fb0294e97daf03769c"},{"sha":"6245b98b0e4e6c59b24794fa63f29b65d851569e","author":{"name":"Nguyễn Thái Ngọc Duy","email":"024f400cd820cb2ddbe54c7fecfd01e45f30bb96@gmail.com"},"message":"submodule.c: remove some of the_repository references\n\nCommit 174d131fc9 (submodule.c: remove implicit dependency on\nthe_index - 2018-09-21) makes collect_changed_submodules() take a\n\"struct index_state *\" as argument even if it's not really used. My\nbad.\n\nInstead of deleting this argument and fixing up all call sites. Let's\ntake this opportunity to remove some the_repository instead because\nthere's one or two in this function (and two more in its callback).\nThe callers can also get rid of some the_repository.\n\nNoticed-by: Jeff King <peff@peff.net>\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/peff/git/commits/6245b98b0e4e6c59b24794fa63f29b65d851569e"},{"sha":"b42ad7d57d5c3a0d11effd01a7e025abee98509c","author":{"name":"Carlo Marcelo Arenas Belón","email":"a799130fe4873cad0b28326d5f5ccb2cdc6e1724@gmail.com"},"message":"read-cache: use of memory after it is freed\n\nintroduced with c46c406ae1e (trace.h: support nested performance tracing)\non Aug 18, 2018 but not affecting maint\n\nSigned-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>\nAcked-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/peff/git/commits/b42ad7d57d5c3a0d11effd01a7e025abee98509c"},{"sha":"276b49ff3413434ec491db8fcb56485a71c6b6e7","author":{"name":"Nguyễn Thái Ngọc Duy","email":"024f400cd820cb2ddbe54c7fecfd01e45f30bb96@gmail.com"},"message":"completion: fix __gitcomp_builtin no longer consider extra options\n\n__gitcomp_builtin() has the main completion list provided by\n\n    git xxx --git-completion-helper\n\nbut the caller can also add extra options that is not provided by\n--git-completion-helper. The only call site that does this is \"git\ndifftool\" completion.\n\nThis support is broken by b221b5ab9b (completion: collapse extra\n--no-.. options - 2018-06-06), which adds a special value \"--\" to mark\nthat the rest of the options can be hidden by default. The commit\nforgets the fact that extra options are appended after\n\"$(git xxx --git-completion-helper)\", i.e. after this \"--\", and will\nbe incorrectly hidden as well.\n\nPrepend the extra options before \"$(git xxx --git-completion-helper)\"\nto avoid this.\n\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/peff/git/commits/276b49ff3413434ec491db8fcb56485a71c6b6e7"},{"sha":"8dd9b3f85a1806ab2aaf0fc4bf20fa17d499a0b0","author":{"name":"Joshua Watt","email":"3148e1aaa0690d7fbfd52909ee80555e1df98d4a@gmail.com"},"message":"send-email: explicitly disable authentication\n\nIt can be necessary to disable SMTP authentication by a mechanism other\nthan sendemail.smtpuser being undefined. For example, if the user has\nsendemail.smtpuser set globally but wants to disable authentication\nlocally in one repository.\n\n--smtp-auth and sendemail.smtpauth now understand the value 'none' which\nmeans to disable authentication completely, even if an authentication\nuser is specified.\n\nThe value 'none' is lower case to avoid conflicts with any RFC 4422\nauthentication mechanisms.\n\nThe user may also specify the command line argument --no-smtp-auth as a\nshorthand for --smtp-auth=none\n\nSigned-off-by: Joshua Watt <JPEWhacker@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/8dd9b3f85a1806ab2aaf0fc4bf20fa17d499a0b0"},{"sha":"368a89124c3ad859631452f7b012d0ad939375f3","author":{"name":"Matthew DeVore","email":"383067055a30849a4b860c77c3257d09c1beb6e6@google.com"},"message":"Documentation/git-log.txt: do not show --exclude-promisor-objects\n\nDo not suggest that --exclude-promisor-objects is supported by git-log,\nsince it currently BUG-crashes and it's not necessary to support it.\nOptions that control behavior for promisor objects should be limited to\na small number of commands.\n\nSigned-off-by: Matthew DeVore <matvore@google.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/368a89124c3ad859631452f7b012d0ad939375f3"},{"sha":"669b1d2aaec73ba762bf566078308075886ca208","author":{"name":"Matthew DeVore","email":"383067055a30849a4b860c77c3257d09c1beb6e6@google.com"},"message":"exclude-promisor-objects: declare when option is allowed\n\nThe --exclude-promisor-objects option causes some funny behavior in at\nleast two commands: log and blame. It causes a BUG crash:\n\n\t$ git log --exclude-promisor-objects\n\tBUG: revision.c:2143: exclude_promisor_objects can only be used\n\twhen fetch_if_missing is 0\n\tAborted\n\t[134]\n\nFix this such that the option is treated like any other unknown option.\nThe commands that must support it are limited, so declare in those\ncommands that the flag is supported. In particular:\n\n\tpack-objects\n\tprune\n\trev-list\n\nThe commands were found by searching for logic which parses\n--exclude-promisor-objects outside of revision.c. Extra logic outside of\nrevision.c is needed because fetch_if_missing must be turned on before\nrevision.c sees the option or it will BUG-crash. The above list is\nsupported by the fact that no other command is introspectively invoked\nby another command passing --exclude-promisor-object.\n\nSigned-off-by: Matthew DeVore <matvore@google.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/669b1d2aaec73ba762bf566078308075886ca208"},{"sha":"7bf198388645995d72073d331fd2bc00243ffea1","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"mingw: factor out code to set stat() data\n\nIn our fstat() emulation, we convert the file metadata from Win32 data\nstructures to an emulated POSIX structure.\n\nTo structure the code better, let's factor that part out into its own\nfunction.\n\nNote: it would be tempting to try to unify this code with the part of\ndo_lstat() that does the same thing, but they operate on different data\nstructures: BY_HANDLE_FILE_INFORMATION vs WIN32_FILE_ATTRIBUTE_DATA. So\nunfortunately, they cannot be unified.\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/peff/git/commits/7bf198388645995d72073d331fd2bc00243ffea1"},{"sha":"d75e6973539f1f99561ae6f42a81f024497e3dfa","author":{"name":"Karsten Blees","email":"955b63282c975ba379c4995cac1c2e1e7dfebe62@dcon.de"},"message":"mingw: replace MSVCRT's fstat() with a Win32-based implementation\n\nfstat() is the only stat-related CRT function for which we don't have a\nfull replacement yet (and thus the only reason to stick with MSVCRT's\n'struct stat' definition).\n\nFully implement fstat(), in preparation of implementing a POSIX 2013\ncompatible 'struct stat' with nanosecond-precision file times.\n\nThis allows us also to implement some clever code to handle pipes and\ncharacter devices in our own way.\n\nSigned-off-by: Karsten Blees <blees@dcon.de>\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/peff/git/commits/d75e6973539f1f99561ae6f42a81f024497e3dfa"},{"sha":"d7e8c87421868ab7dab2814360d277a425b42bc5","author":{"name":"Karsten Blees","email":"955b63282c975ba379c4995cac1c2e1e7dfebe62@dcon.de"},"message":"mingw: implement nanosecond-precision file times\n\nWe no longer use any of MSVCRT's stat-functions, so there's no need to\nstick to a CRT-compatible 'struct stat' either.\n\nDefine and use our own POSIX-2013-compatible 'struct stat' with nanosecond-\nprecision file times.\n\nNote: This can cause performance issues when using Git variants with\ndifferent file time resolutions, as the timestamps are stored in the Git\nindex: after updating the index with a Git variant that uses\nsecond-precision file times, a nanosecond-aware Git will think that\npretty much every single file listed in the index is out of date.\n\nSigned-off-by: Karsten Blees <blees@dcon.de>\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/peff/git/commits/d7e8c87421868ab7dab2814360d277a425b42bc5"},{"sha":"328a43518244b970e1765eca78060bfeb265a584","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"repack: point out a bug handling stale shallow info\n\nA `git fetch --prune` can turn previously-reachable objects unreachable,\neven commits that are in the `shallow` list. A subsequent `git repack\n-ad` will then unceremoniously drop those unreachable commits, and the\n`shallow` list will become stale. This means that when we try to fetch\nwith a larger `--depth` the next time, we may end up with:\n\n\tfatal: error in object: unshallow <commit-hash>\n\nReported by Alejandro Pauly.\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/peff/git/commits/328a43518244b970e1765eca78060bfeb265a584"},{"sha":"2588f6ed8bd4e31c1ea1ae35f9f668452b46f1ef","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"shallow: offer to prune only non-existing entries\n\nThe `prune_shallow()` function wants a full reachability check to be\ncompleted before it goes to work, to ensure that all unreachable entries\nare removed from the shallow file.\n\nHowever, in the upcoming patch we do not even want to go that far. We\nreally only need to remove entries corresponding to pruned commits, i.e.\nto commits that no longer exist.\n\nLet's support that use case.\n\nRather than extending the signature of `prune_shallow()` to accept\nanother Boolean, let's turn it into a bit field and declare constants,\nfor readability.\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/peff/git/commits/2588f6ed8bd4e31c1ea1ae35f9f668452b46f1ef"},{"sha":"5dcfbf564c0f10869e568af4e05421f63b44fbbf","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"repack -ad: prune the list of shallow commits\n\n`git repack` can drop unreachable commits without further warning,\nmaking the corresponding entries in `.git/shallow` invalid, which causes\nserious problems when deepening the branches.\n\nOne scenario where unreachable commits are dropped by `git repack` is\nwhen a `git fetch --prune` (or even a `git fetch` when a ref was\nforce-pushed in the meantime) can make a commit unreachable that was\nreachable before.\n\nTherefore it is not safe to assume that a `git repack -adlf` will keep\nunreachable commits alone (under the assumption that they had not been\npacked in the first place, which is an assumption at least some of Git's\ncode seems to make).\n\nThis is particularly important to keep in mind when looking at the\n`.git/shallow` file: if any commits listed in that file become\nunreachable, it is not a problem, but if they go missing, it *is* a\nproblem. One symptom of this problem is that a deepening fetch may now\nfail with\n\n\tfatal: error in object: unshallow <commit-hash>\n\nTo avoid this problem, let's prune the shallow list in `git repack` when\nthe `-d` option is passed, unless `-A` is passed, too (which would force\nthe now-unreachable objects to be turned into loose objects instead of\nbeing deleted). Additionally, we also need to take `--keep-reachable`\nand `--unpack-unreachable=<date>` into account.\n\nNote: an alternative solution discussed during the review of this patch\nwas to teach `git fetch` to simply ignore entries in .git/shallow if the\ncorresponding commits do not exist locally. A quick test, however,\nrevealed that the .git/shallow file is written during a shallow *clone*,\nin which case the commits do not exist, either, but the \"shallow\" line\n*does* need to be sent. Therefore, this approach would be a lot more\nfinicky than the approach presented by the this patch.\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/peff/git/commits/5dcfbf564c0f10869e568af4e05421f63b44fbbf"},{"sha":"00436bf1b1c2a8fe6cf5d2c2457d419d683042f4","author":{"name":"Josh Steadmon","email":"c1c75ccee0646ea8cd9131d47d0226ff557b5b84@google.com"},"message":"archive: initialize archivers earlier\n\nInitialize archivers as soon as possible when running git-archive.\nVarious non-obvious behavior depends on having the archivers\ninitialized, such as determining the desired archival format from the\nprovided filename.\n\nSince 08716b3c11 (\"archive: refactor file extension format-guessing\",\n2011-06-21), archive_format_from_filename() has used the registered\narchivers to match filenames (provided via --output) to archival\nformats. However, when git-archive is executed with --remote, format\ndetection happens before the archivers have been registered. This causes\narchives from remotes to always be generated as TAR files, regardless of\nthe actual filename (unless an explicit --format is provided).\n\nThis patch fixes that behavior; archival format is determined properly\nfrom the output filename, even when --remote is used.\n\nHelped-by: Jeff King <peff@peff.net>\nSigned-off-by: Josh Steadmon <steadmon@google.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/00436bf1b1c2a8fe6cf5d2c2457d419d683042f4"},{"sha":"3063477445423fd5ec52efa073fb8d15c1641f4e","author":{"name":"Torsten Bögershausen","email":"955341c97b9d93a23c19524fc0105a6405902afe@web.de"},"message":"path.c: char is not (always) signed\n\nIf a \"char\" in C is signed or unsigned is not specified, because it is\nout of tradition \"implementation dependent\".\nTherefore constructs like \"if (name[i] < 0)\" are not portable,\nuse \"if (name[i] & 0x80)\" instead.\n\nDetected by \"gcc (Raspbian 6.3.0-18+rpi1+deb9u1) 6.3.0 20170516\" when\nsetting\nDEVELOPER = 1\nDEVOPTS = extra-all\n\nSigned-off-by: Torsten Bögershausen <tboegi@web.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/3063477445423fd5ec52efa073fb8d15c1641f4e"},{"sha":"32ee384be83bee900af272f2df3c12814e1b8ed6","author":{"name":"Sebastian Staudt","email":"e8af4ae720ff700e0f2b6f15a94e8b92e9ad15de@gmail.com"},"message":"travis-ci: no longer use containers\n\nTravis CI will soon deprecate the container-based infrastructure\nenabled by `sudo: false` in ce59dffb34190e780be2fa9f449f842cadee9753.\n\nMore info:\nhttps://blog.travis-ci.com/2018-10-04-combining-linux-infrastructures\n\nSigned-off-by: Sebastian Staudt <koraktor@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/32ee384be83bee900af272f2df3c12814e1b8ed6"},{"sha":"8c64bc942056eeb5eab467e1f99394f66be0796a","author":{"name":"Johannes Sixt","email":"fd432345609ae4d58c1aa629cb66ba96d1391622@kdbg.org"},"message":"t3404-rebase-interactive: test abbreviated commands\n\nMake sure that each short command is tested at least once. To\nnot exacerbate the runtime of the test script, do not add new\ntests, but modify existing ones according to these criteria:\n\n- The test does not have a prerequisite.\n- The 'git rebase' command is not guarded by test_must_fail.\n\nThe pick commands are optional in the FAKE_LINES variable, but\nwhen used, they do end up in the insn sheet. Test them, too.\n\nSigned-off-by: Johannes Sixt <j6t@kdbg.org>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/8c64bc942056eeb5eab467e1f99394f66be0796a"}]}
{"actor":{"display_login":"peff"}}