{"push_id":2535814942,"size":193,"distinct_size":189,"ref":"refs/heads/coccinelle-improvements-and-pu","head":"85b0fa12a1bb690b9eb5cdf652d061d8033858dc","before":"90951d715980db1a251c2dc270f16bf9afb7457e","commits":[{"sha":"68c25761f9ab7cb9c54a3651148107ebfc9cdef1","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"test_must_fail: support ok=sigabrt\n\nIn the upcoming patch, we will prepare t1406 to handle the conversion of\nrefs/files-backend.c to call BUG() instead of die(\"BUG: ...\"). This will\nrequire handling SIGABRT as valid failure case.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/68c25761f9ab7cb9c54a3651148107ebfc9cdef1"},{"sha":"0baab3354b343c089d8d5946750a5d723d169236","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"t1406: prepare for the refs code to fail with BUG()\n\nt1406 specifically verifies that certain code paths fail with a BUG: ...\nmessage.\n\nIn the upcoming commit, we will convert that message to be generated via\nBUG() instead of die(\"BUG: ...\"), which implies SIGABRT instead of a\nregular exit code.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/0baab3354b343c089d8d5946750a5d723d169236"},{"sha":"6bf95a75244691addd979c50b84ec91a53eb77bf","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"refs/*: report bugs using the BUG() macro\n\nWe just prepared t1406 to be okay with BUG reports resulting in SIGABRT\ninstead of a regular exit code indicating failure. This commit now makes\nit so: by calling BUG() (which eventually calls `abort()`), we no longer\nexit with code 128 but instead throw that signal.\n\nThis trick was performed by this invocation:\n\n\tsed -i 's/die(\"BUG: /BUG(\"/' $(git grep -l 'die(\"BUG' refs/\\*.c)\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/6bf95a75244691addd979c50b84ec91a53eb77bf"},{"sha":"c3a0e46c9724c1ca8027bcefaedddc9b613a462c","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"run-command: use BUG() to report bugs, not die()\n\nThe slightly misleading name die_bug() of the function intended to\nreport a bug is actually called always, and only reports a bug if the\npassed-in parameter `err` is non-zero.\n\nIt uses die_errno() to report the bug, to helpfully include the error\nmessage corresponding to `err`.\n\nHowever, as these messages indicate bugs, we really should use BUG().\nAnd as BUG() is a macro to be able to report the exact file and line\nnumber, we need to convert die_bug() to a macro instead of only\nreplacing the die_errno() by a call to BUG().\n\nWhile at it, use a name more indicative of the purpose: CHECK_BUG().\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/c3a0e46c9724c1ca8027bcefaedddc9b613a462c"},{"sha":"328e7fa0196a71c0aaeaffcb93742a0a6721990e","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"Replace all die(\"BUG: ...\") calls by BUG() ones\n\nIn d8193743e08 (usage.c: add BUG() function, 2017-05-12), a new macro\nwas introduced to use for reporting bugs instead of die(). It was then\nsubsequently used to convert one single caller in 588a538ae55\n(setup_git_env: convert die(\"BUG\") to BUG(), 2017-05-12).\n\nThe cover letter of the patch series containing this patch\n(cf 20170513032414.mfrwabt4hovujde2@sigill.intra.peff.net) is not\nterribly clear why only one call site was converted, or what the plan\nis for other, similar calls to die() to report bugs.\n\nLet's just convert all remaining ones in one fell swoop.\n\nThis trick was performed by this invocation:\n\n\tsed -i 's/die(\"BUG: /BUG(\"/g' $(git grep -l 'die(\"BUG' \\*.c)\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/328e7fa0196a71c0aaeaffcb93742a0a6721990e"},{"sha":"60f9dd75e6eef89444fe502d6725e450a35813c0","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"Convert remaining die*(BUG) messages\n\nThese were not caught by the previous commit, as they did not match the\nregular expression.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/60f9dd75e6eef89444fe502d6725e450a35813c0"},{"sha":"d5bc6f292ab0a1715ff021f5854ac5a81c2b88b0","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"rebase -i: demonstrate bugs with fixup!/squash! commit messages\n\nWhen multiple fixup/squash commands are processed and the last one\ncauses merge conflicts and is skipped, we leave the \"This is a\ncombination of ...\" comments in the commit message.\n\nNoticed by Eric Sunshine.\n\nThis regression test also demonstrates that we rely on the localized\nversion of\n\n\t# This is a combination of <number> commits\n\nto contain the <number> in ASCII, which breaks under GETTEXT_POISON.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/d5bc6f292ab0a1715ff021f5854ac5a81c2b88b0"},{"sha":"e12a7ef5972423c822834f9c514a54e32ea99e65","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"rebase -i: Handle \"combination of <n> commits\" with GETTEXT_POISON\n\nWe previously relied on the localized versions of\n\n\t# This is a combination of <N> commits\n\n(which we write into the commit messages during fixup/squash chains)\nto contain <N> encoded in ASCII.\n\nThis is not true in general, and certainly not true when compiled with\nGETTEXT_POISON=TryToKillMe, as demonstrated by the regression test we\njust introduced in t3418.\n\nSo let's decouple keeping track of the count from the (localized) commit\nmessages by introducing a new file called 'current-fixups' that keeps\ntrack of the current fixup/squash chain. This file contains a bit more\nthan just the count (it contains a list of \"fixup <commit>\"/\"squash\n<commit>\" lines). This is done on purpose, as it will come in handy for\na fix for the bug where `git rebase --skip` on a final fixup/squash will\nleave the commit message in limbo.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/e12a7ef5972423c822834f9c514a54e32ea99e65"},{"sha":"dc4b5bc3534bf4d8f362173d905d294048c48f79","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"sequencer: always commit without editing when asked for\n\nPreviously, we only called run_git_commit() without EDIT_MSG when we also\npassed in a default message.\n\nHowever, an upcoming caller will want to commit without EDIT_MSG and\n*without* a default message: to clean up fixup/squash comments in HEAD's\ncommit message.\n\nLet's prepare for that.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/dc4b5bc3534bf4d8f362173d905d294048c48f79"},{"sha":"15ef69314d54945471603223bef00091673b5725","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"rebase --skip: clean up commit message after a failed fixup/squash\n\nDuring a series of fixup/squash commands, the interactive rebase builds\nup a commit message with comments. This will be presented to the user in\nthe editor if at least one of those commands was a `squash`.\n\nIn any case, the commit message will be cleaned up eventually, removing\nall those intermediate comments, in the final step of such a\nfixup/squash chain.\n\nHowever, if the last fixup/squash command in such a chain fails with\nmerge conflicts, and if the user then decides to skip it (or resolve it\nto a clean worktree and then continue the rebase), the current code\nfails to clean up the commit message.\n\nThis commit fixes that behavior.\n\nThe fix is quite a bit more involved than meets the eye because it is\nnot only about the question whether we are `git rebase --skip`ing a\nfixup or squash. It is also about removing the skipped fixup/squash's\ncommit message from the accumulated commit message. And it is also about\nthe question whether we should let the user edit the final commit\nmessage or not (\"Was there a squash in the chain *that was not\nskipped*?\").\n\nFor example, in this case we will want to fix the commit message, but\nnot open it in an editor:\n\n\tpick\t<- succeeds\n\tfixup\t<- succeeds\n\tsquash\t<- fails, will be skipped\n\nThis is where the newly-introduced `current-fixups` file comes in real\nhandy. A quick look and we can determine whether there was a non-skipped\nsquash. We only need to make sure to keep it up to date with respect to\nskipped fixup/squash commands. As a bonus, we can even avoid committing\nunnecessarily, e.g. when there was only one fixup, and it failed, and\nwas skipped.\n\nTo fix only the bug where the final commit message was not cleaned up\nproperly, but without fixing the rest, would have been more complicated\nthan fixing it all in one go, hence this commit lumps together more than\na single concern.\n\nFor the same reason, this commit also adds a bit more to the existing\ntest case for the regression we just fixed.\n\nThe diff is best viewed with --color-moved.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/15ef69314d54945471603223bef00091673b5725"},{"sha":"742ae10e355041bb19b8d3d530453136e2a8eff2","author":{"name":"Torsten Bögershausen","email":"955341c97b9d93a23c19524fc0105a6405902afe@web.de"},"message":"test: correct detection of UTF8_NFD_TO_NFC for APFS\n\nOn HFS (which is the default Mac filesystem prior to High Sierra),\nunicode names are \"decomposed\" before recording.\nOn APFS, which appears to be the new default filesystem in Mac OS High\nSierra, filenames are recorded as specified by the user.\n\nAPFS continues to allow the user to access it via any name\nthat normalizes to the same thing.\n\nThis difference causes t0050-filesystem.sh to fail two tests.\n\nImprove the test for a NFD/NFC in test-lib.sh:\nTest if the same file can be reached in pre- and decomposed unicode.\n\nReported-By: Elijah Newren <newren@gmail.com>\nSigned-off-by: Torsten Bögershausen <tboegi@web.de>\nTested-by: Elijah Newren <newren@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/742ae10e355041bb19b8d3d530453136e2a8eff2"},{"sha":"7db118303aa04930bea66e855e8659e042f3fa5d","author":{"name":"Elijah Newren","email":"955405675e5ddb1a110d200661c528aa223ef60f@gmail.com"},"message":"unpack_trees: fix breakage when o->src_index != o->dst_index\n\nCurrently, all callers of unpack_trees() set o->src_index == o->dst_index.\nThe code in unpack_trees() does not correctly handle them being different.\nThere are two separate issues:\n\nFirst, there is the possibility of memory corruption.  Since\nunpack_trees() creates a temporary index in o->result and then discards\no->dst_index and overwrites it with o->result, in the special case that\no->src_index == o->dst_index, it is safe to just reuse o->src_index's\nsplit_index for o->result.  However, when src and dst are different,\nreusing o->src_index's split_index for o->result will cause the\nsplit_index to be shared.  If either index then has entries replaced or\nremoved, it will result in the other index referring to free()'d memory.\n\nSecond, we can drop the index extensions.  Previously, we were moving\nindex extensions from o->dst_index to o->result.  Since o->src_index is\nthe one that will have the necessary extensions (o->dst_index is likely to\nbe a new index temporary index created to store the results), we should be\nmoving the index extensions from there.\n\nSigned-off-by: Elijah Newren <newren@gmail.com>\nAcked-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/7db118303aa04930bea66e855e8659e042f3fa5d"},{"sha":"50cd54ef4e6f4279683b61417a35de7297b55b9d","author":{"name":"brian m. carlson","email":"738bdd359be778fee9f0fc4e2934ad72f436ceda@crustytoothpaste.net"},"message":"format-patch: make cover letters always text/plain\n\nWhen formatting a series of patches using --attach and --cover-letter,\nthe cover letter lacks the closing MIME boundary, violating RFC 2046.\nCertain clients, such as Thunderbird, discard the message body in such a\ncase.\n\nSince the cover letter is just one part and sending it as\nmultipart/mixed is not very useful, always emit it as text/plain,\navoiding the boundary problem altogether.\n\nReported-by: Patrick Hemmer <git@stormcloud9.net>\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/50cd54ef4e6f4279683b61417a35de7297b55b9d"},{"sha":"279ffad17dcc3b72aa7cb5c73fb7aa8eddeed9da","author":{"name":"SZEDER Gábor","email":"d1c15c709aaa0744057ac20f93d60e563c0b84d1@gmail.com"},"message":"coccinelle: avoid wrong transformation suggestions from commit.cocci\n\nThe semantic patch 'contrib/coccinelle/commit.cocci' added in\n2e27bd7731 (treewide: replace maybe_tree with accessor methods,\n2018-04-06) is supposed to \"ensure that all references to the\n'maybe_tree' member of struct commit are either mutations or accesses\nthrough get_commit_tree()\".  So get_commit_tree() clearly must be able\nto directly access the 'maybe_tree' member, and 'commit.cocci' has a\nbit of a roundabout workaround to ensure that get_commit_tree()'s\ndirect access in its return statement is not transformed: after all\nreferences to 'maybe_tree' have been transformed to a call to\nget_commit_tree(), including the reference in get_commit_tree()\nitself, the last rule transforms back a 'return get_commit_tree()'\nstatement, back then found only in get_commit_tree() itself, to a\ndirect access.\n\nUnfortunately, already the very next commit shows that this workaround\nis insufficient: 7b8a21dba1 (commit-graph: lazy-load trees for\ncommits, 2018-04-06) extends get_commit_tree() with a condition\ndirectly accessing the 'maybe_tree' member, and Coccinelle with\n'commit.cocci' promptly detects it and suggests a transformation to\navoid it.  This transformation is clearly wrong, because calling\nget_commit_tree() to access 'maybe_tree' _in_ get_commit_tree() would\nobviously lead to recursion.  Furthermore, the same commit added\nanother, more specialized getter function get_commit_tree_in_graph(),\nwhose legitimate direct access to 'maybe_tree' triggers a similar\nwrong transformation suggestion.\n\nExclude both of these getter functions from the general rule in\n'commit.cocci' that matches their direct accesses to 'maybe_tree'.\nAlso exclude load_tree_for_commit(), which, as static helper funcion\nof get_commit_tree_in_graph(), has legitimate direct access to\n'maybe_tree' as well.\n\nThe last rule transforming back 'return get_commit_tree()' statements\nto direct accesses thus became unnecessary, remove it.\n\nSigned-off-by: SZEDER Gábor <szeder.dev@gmail.com>\nAcked-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/279ffad17dcc3b72aa7cb5c73fb7aa8eddeed9da"},{"sha":"8fb572af5f4e3bef2415ac2dba8d76d37235b489","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"ref-filter: fix outdated comment on in_commit_list\n\nThe in_commit_list() method does not check the parents of\nthe candidate for containment in the list. Fix the comment\nthat incorrectly states that it does.\n\nReported-by: Jakub Narebski <jnareb@gmail.com>\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/8fb572af5f4e3bef2415ac2dba8d76d37235b489"},{"sha":"27b06e2d6516b14fce68eb0505e73cec90802bdd","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit: add generation number to struct commmit\n\nThe generation number of a commit is defined recursively as follows:\n\n* If a commit A has no parents, then the generation number of A is one.\n* If a commit A has parents, then the generation number of A is one\n  more than the maximum generation number among the parents of A.\n\nAdd a uint32_t generation field to struct commit so we can pass this\ninformation to revision walks. We use three special values to signal\nthe generation number is invalid:\n\nGENERATION_NUMBER_INFINITY 0xFFFFFFFF\nGENERATION_NUMBER_MAX 0x3FFFFFFF\nGENERATION_NUMBER_ZERO 0\n\nThe first (_INFINITY) means the generation number has not been loaded or\ncomputed. The second (_MAX) means the generation number is too large to\nstore in the commit-graph file. The third (_ZERO) means the generation\nnumber was loaded from a commit graph file that was written by a version\nof git that did not support generation numbers.\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/27b06e2d6516b14fce68eb0505e73cec90802bdd"},{"sha":"4f7d3fe9a18ec15b3529419b4cbfa0b7ddc42c6c","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit-graph: compute generation numbers\n\nWhile preparing commits to be written into a commit-graph file, compute\nthe generation numbers using a depth-first strategy.\n\nThe only commits that are walked in this depth-first search are those\nwithout a precomputed generation number. Thus, computation time will be\nrelative to the number of new commits to the commit-graph file.\n\nIf a computed generation number would exceed GENERATION_NUMBER_MAX, then\nuse GENERATION_NUMBER_MAX instead.\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/4f7d3fe9a18ec15b3529419b4cbfa0b7ddc42c6c"},{"sha":"4b8b7eb49c5eae3e5f5866639ae01ff79206b45a","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit: use generations in paint_down_to_common()\n\nDefine compare_commits_by_gen_then_commit_date(), which uses generation\nnumbers as a primary comparison and commit date to break ties (or as a\ncomparison when both commits do not have computed generation numbers).\n\nSince the commit-graph file is closed under reachability, we know that\nall commits in the file have generation at most GENERATION_NUMBER_MAX\nwhich is less than GENERATION_NUMBER_INFINITY.\n\nThis change does not affect the number of commits that are walked during\nthe execution of paint_down_to_common(), only the order that those\ncommits are inspected. In the case that commit dates violate topological\norder (i.e. a parent is \"newer\" than a child), the previous code could\nwalk a commit twice: if a commit is reached with the PARENT1 bit, but\nlater is re-visited with the PARENT2 bit, then that PARENT2 bit must be\npropagated to its parents. Using generation numbers avoids this extra\neffort, even if it is somewhat rare.\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/4b8b7eb49c5eae3e5f5866639ae01ff79206b45a"},{"sha":"ec61bbdeb7414a5679c9cc5bcac3e195953dbdf1","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit-graph: always load commit-graph information\n\nMost code paths load commits using lookup_commit() and then\nparse_commit(). In some cases, including some branch lookups, the commit\nis parsed using parse_object_buffer() which side-steps parse_commit() in\nfavor of parse_commit_buffer().\n\nWith generation numbers in the commit-graph, we need to ensure that any\ncommit that exists in the commit-graph file has its generation number\nloaded.\n\nCreate new load_commit_graph_info() method to fill in the information\nfor a commit that exists only in the commit-graph file. Call it from\nparse_commit_buffer() after loading the other commit information from\nthe given buffer. Only fill this information when specified by the\n'check_graph' parameter.\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/ec61bbdeb7414a5679c9cc5bcac3e195953dbdf1"},{"sha":"037d9c10efba90743a052b02825939b327b8f077","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"ref-filter: use generation number for --contains\n\nA commit A can reach a commit B only if the generation number of A\nis strictly larger than the generation number of B. This condition\nallows significantly short-circuiting commit-graph walks.\n\nUse generation number for '--contains' type queries.\n\nOn a copy of the Linux repository where HEAD is contained in v4.13\nbut no earlier tag, the command 'git tag --contains HEAD' had the\nfollowing peformance improvement:\n\nBefore: 0.81s\nAfter:  0.04s\nRel %:  -95%\n\nHelped-by: Jeff King <peff@peff.net>\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/szeder/git/commits/037d9c10efba90743a052b02825939b327b8f077"}]}
{"actor":{"display_login":"szeder"}}