{"thread":{"id":"60492","subject":"[ANNOUNCE] Git v2.43.0-rc1","startedAt":"2023-11-08T17:34:00Z","lastAt":"2023-11-14T09:05:09Z","messageCount":6,"participants":["Junio C Hamano","Andy Koppe","Jeff King","Patrick Steinhardt"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"484587","messageId":"xmqq8r785ev1.fsf@gitster.g","threadId":"60492","inReplyTo":null,"subject":"[ANNOUNCE] Git v2.43.0-rc1","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2023-11-08T17:33:54Z","receivedAt":"2023-11-08T17:34:00Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"A release candidate Git v2.43.0-rc1 is now available for testing at\nthe usual places.  It is comprised of 449 non-merge commits since\nv2.42.0, contributed by 71 people, 17 of which are new faces [*].\n\nThe tarballs are found at:\n\n    https://www.kernel.org/pub/software/scm/git/testing/\n\nThe following public repositories all have a copy of the\n'v2.43.0-rc1' tag and the 'master' branch that the tag points at:\n\n  url = https://git.kernel.org/pub/scm/git/git\n  url = https://kernel.googlesource.com/pub/scm/git/git\n  url = git://repo.or.cz/alt-git.git\n  url = https://github.com/gitster/git\n\nNew contributors whose contributions weren't in v2.42.0 are as follows.\nWelcome to the Git development community!\n\n  Aditya Neelamraju, Alyssa Ross, Caleb Hill, Dorcas AnonoLitunya,\n  Dragan Simic, Isoken June Ibizugbe, Jan Alexander Steffens\n  (heftig), Javier Mora, ks1322 ks1322, Mark Ruvald Pedersen,\n  Matthew McClain, Naomi Ibe, Romain Chossart, Tang Yuyi, Vipul\n  Kumar, 王常新, and 谢致邦 (XIE Zhibang).\n\nReturning contributors who helped this release are as follows.\nThanks for your continued support.\n\n  Ævar Arnfjörð Bjarmason, Andrei Rybak, Andy Koppe, Bagas\n  Sanjaya, Beat Bolli, brian m. carlson, Calvin Wan, Christian\n  Couder, Christian Hesse, Derrick Stolee, Drew DeVault, Elijah\n  Newren, Emily Shaffer, Eric W. Biederman, Eric Wong, Evan\n  Gates, Han Young, Hariom Verma, Jacob Abel, Jacob Stopak,\n  Jason Hatton, Jeff King, Johannes Schindelin, John Cai,\n  Josh Soref, Josip Sokcevic, Junio C Hamano, Karthik Nayak,\n  Kousik Sanagavarapu, Kristoffer Haugsbakk, Linus Arver, Mark\n  Levedahl, Martin Ågren, Martin Storsjö, M Hickford, Michael\n  Strawbridge, Michal Suchanek, Oswald Buddenhagen, Patrick\n  Steinhardt, Philippe Blain, Phillip Wood, Randall S. Becker,\n  René Scharfe, Robert Coup, Rubén Justo, Sergey Organov, Shuqi\n  Liang, Stefan Haller, Štěpán Němec, Taylor Blau, Teng Long,\n  Todd Zullinger, Victoria Dye, and Wesley Schwengle.\n\n[*] We are counting not just the authorship contribution but issue\n    reporting, mentoring, helping and reviewing that are recorded in\n    the commit trailers.\n\n----------------------------------------------------------------\n\nGit v2.43 Release Notes (draft)\n===============================\n\nBackward Compatibility Notes\n\n * The \"--rfc\" option of \"git format-patch\" used to be a valid way to\n   override an earlier \"--subject-prefix=<something>\" on the command\n   line and replace it with \"[RFC PATCH]\", but from this release, it\n   merely prefixes the string \"RFC \" in front of the given subject\n   prefix.  If you are negatively affected by this change, please use\n   \"--subject-prefix=PATCH --rfc\" as a replacement.\n\n * \"git rev-list --stdin\" learned to take non-revisions (like \"--not\")\n   recently from the standard input, but the way such a \"--not\" was\n   handled was quite confusing, which has been rethought.  The updated\n   rule is that \"--not\" given from the command line only affects revs\n   given from the command line that comes but not revs read from the\n   standard input, and \"--not\" read from the standard input affects\n   revs given from the standard input and not revs given from the\n   command line.\n\nUI, Workflows & Features\n\n * A message written in olden time prevented a branch from getting\n   checked out saying it is already checked out elsewhere, but these\n   days, we treat a branch that is being bisected or rebased just like\n   a branch that is checked out and protect it.  Rephrase the message\n   to say that the branch is in use.\n\n * Hourly and other schedule of \"git maintenance\" jobs are randomly\n   distributed now.\n\n * \"git cmd -h\" learned to signal which options can be negated by\n   listing such options like \"--[no-]opt\".\n\n * The way authentication related data other than passwords (e.g.\n   oath token and password expiration data) are stored in libsecret\n   keyrings has been rethought.\n\n * Update the libsecret and wincred credential helpers to correctly\n   match which credential to erase; they erased the wrong entry in\n   some cases.\n\n * Git GUI updates.\n\n * \"git format-patch\" learns a way to feed cover letter description,\n   that (1) can be used on detached HEAD where there is no branch\n   description available, and (2) also can override the branch\n   description if there is one.\n\n * Use of --max-pack-size to allow multiple packfiles to be created is\n   now supported even when we are sending unreachable objects to cruft\n   packs.\n\n * \"git format-patch --rfc --subject-prefix=<foo>\" used to ignore the\n   \"--subject-prefix\" option and used \"[RFC PATCH]\"; now we will add\n   \"RFC\" prefix to whatever subject prefix is specified.\n\n * \"git log --format\" has been taught the %(decorate) placeholder.\n\n * The default log message created by \"git revert\", when reverting a\n   commit that records a revert, has been tweaked, to encourage people\n   describe complex \"revert of revert of revert\" situation better in\n   their own words.\n\n * The command-line completion support (in contrib/) learned to\n   complete \"git commit --trailer=\" for possible trailer keys.\n\n * \"git update-index\" learns \"--show-index-version\" to inspect\n   the index format version used by the on-disk index file.\n\n * \"git diff\" learned diff.statNameWidth configuration variable, to\n   give the default width for the name part in the \"--stat\" output.\n\n * \"git range-diff --notes=foo\" compared \"log --notes=foo --notes\" of\n   the two ranges, instead of using just the specified notes tree.\n\n * The command line completion script (in contrib/) can be told to\n   complete aliases by including \": git <cmd> ;\" in the alias to tell\n   it that the alias should be completed similar to how \"git <cmd>\" is\n   completed.  The parsing code for the alias as been loosened to\n   allow ';' without an extra space before it.\n\n * \"git for-each-ref\" and friends learned to apply mailmap to\n   authorname and other fields.\n\n * \"git repack\" machinery learns to pay attention to the \"--filter=\"\n   option.\n\n * \"git repack\" learned \"--max-cruft-size\" to prevent cruft packs from\n   growing without bounds.\n\n * \"git merge-tree\" learned to take strategy backend specific options\n   via the \"-X\" option, like \"git merge\" does.\n\n * \"git log\" and friends learned \"--dd\" that is a short-hand for\n   \"--diff-merges=first-parent -p\".\n\n * The attribute subsystem learned to honor `attr.tree` configuration\n   that specifies which tree to read the .gitattributes files from.\n\n * \"git merge-file\" learns a mode to read three contents to be merged\n   from blob objects.\n\n\nPerformance, Internal Implementation, Development Support etc.\n\n * \"git check-attr\" has been taught to work better with sparse-index.\n\n * It may be tempting to leave the help text NULL for a command line\n   option that is either hidden or too obvious, but \"git subcmd -h\"\n   and \"git subcmd --help-all\" would have segfaulted if done so.  Now\n   the help text is optional.\n\n * Tests that are known to pass with LSan are now marked as such.\n\n * Flaky \"git p4\" tests, as well as \"git svn\" tests, are now skipped\n   in the (rather expensive) sanitizer CI job.\n\n * Tests with LSan from time to time seem to emit harmless message\n   that makes our tests unnecessarily flaky; we work it around by\n   filtering the uninteresting output.\n\n * Unused parameters to functions are marked as such, and/or removed,\n   in order to bring us closer to -Wunused-parameter clean.\n\n * The code to keep track of existing packs in the repository while\n   repacking has been refactored.\n\n * The \"streaming\" interface used for bulk-checkin codepath has been\n   narrowed to take only blob objects for now, with no real loss of\n   functionality.\n\n * GitHub CI workflow has learned to trigger Coverity check.\n\n * Test coverage for trailers has been improved.\n\n * The code to iterate over loose references have been optimized to\n   reduce the number of lstat() system calls.\n\n * The codepaths that read \"chunk\" formatted files have been corrected\n   to pay attention to the chunk size and notice broken files.\n\n * Replace macos-12 used at GitHub CI with macos-13.\n   (merge 682a868f67 js/ci-use-macos-13 later to maint).\n\n\nFixes since v2.42\n-----------------\n\n * Overly long label names used in the sequencer machinery are now\n   chopped to fit under filesystem limitation.\n\n * Scalar updates.\n\n * Tweak GitHub Actions CI so that pushing the same commit to multiple\n   branch tips at the same time will not waste building and testing\n   the same thing twice.\n\n * The commit-graph verification code that detects mixture of zero and\n   non-zero generation numbers has been updated.\n\n * \"git diff -w --exit-code\" with various options did not work\n   correctly, which is being addressed.\n\n * transfer.unpackLimit ought to be used as a fallback, but overrode\n   fetch.unpackLimit and receive.unpackLimit instead.\n\n * The use of API between two calls to require_clean_work_tree() from\n   the sequencer code has been cleaned up for consistency.\n\n * \"git diff --no-such-option\" and other corner cases around the exit\n   status of the \"diff\" command has been corrected.\n\n * \"git for-each-ref --sort='contents:size'\" sorts the refs according\n   to size numerically, giving a ref that points at a blob twelve-byte\n   (12) long before showing a blob hundred-byte (100) long.\n\n * We now limit depth of the tree objects and maximum length of\n   pathnames recorded in tree objects.\n   (merge 4d5693ba05 jk/tree-name-and-depth-limit later to maint).\n\n * Various fixes to the behavior of \"rebase -i\" when the command got\n   interrupted by conflicting changes.\n\n * References from description of the `--patch` option in various\n   manual pages have been simplified and improved.\n\n * \"git grep -e A --no-or -e B\" is accepted, even though the negation\n   of \"or\" did not mean anything, which has been tightened.\n\n * The completion script (in contrib/) has been taught to treat the\n   \"-t\" option to \"git checkout\" and \"git switch\" just like the\n   \"--track\" option, to complete remote-tracking branches.\n\n * \"git diff --no-index -R <(one) <(two)\" did not work correctly,\n   which has been corrected.\n\n * Update \"git maintenance\" timers' implementation based on systemd\n   timers to work with WSL.\n\n * \"git diff --cached\" codepath did not fill the necessary stat\n   information for a file when fsmonitor knows it is clean and ended\n   up behaving as if it is not clean, which has been corrected.\n\n * Clarify how \"alias.foo = : git cmd ; aliased-command-string\" should\n   be spelled with necessary whitespaces around punctuation marks to\n   work.\n\n * HTTP Header redaction code has been adjusted for a newer version of\n   cURL library that shows its traces differently from earlier\n   versions.\n\n * An error message given by \"git send-email\" when given a malformed\n   address did not give correct information, which has been corrected.\n\n * UBSan options were not propagated through the test framework to git\n   run via the httpd, unlike ASan options, which has been corrected.\n\n * \"checkout --merge -- path\" and \"update-index --unresolve path\" did\n   not resurrect conflicted state that was resolved to remove path,\n   but now they do.\n   (merge 5bdedac3c7 jc/unresolve-removal later to maint).\n\n * The display width table for unicode characters has been updated for\n   Unicode 15.1\n   (merge 872976c37e bb/unicode-width-table-15 later to maint).\n\n * Update mailmap entry for Derrick.\n   (merge 6e5457d8c7 ds/mailmap-entry-update later to maint).\n\n * In .gitmodules files, submodules are keyed by their names, and the\n   path to the submodule whose name is $name is specified by the\n   submodule.$name.path variable.  There were a few codepaths that\n   mixed the name and path up when consulting the submodule database,\n   which have been corrected.  It took long for these bugs to be found\n   as the name of a submodule initially is the same as its path, and\n   the problem does not surface until it is moved to a different path,\n   which apparently happens very rarely.\n\n * \"git diff --merge-base X other args...\" insisted that X must be a\n   commit and errored out when given an annotated tag that peels to a\n   commit, but we only need it to be a committish.  This has been\n   corrected.\n   (merge 4adceb5a29 ar/diff-index-merge-base-fix later to maint).\n\n * Fix \"git merge-tree\" to stop segfaulting when the --attr-source\n   option is used.\n   (merge e95bafc52f jc/merge-ort-attr-index-fix later to maint).\n\n * Unlike \"git log --pretty=%D\", \"git log --pretty=\"%(decorate)\" did\n   not auto-initialize the decoration subsystem, which has been\n   corrected.\n\n * Feeding \"git stash store\" with a random commit that was not created\n   by \"git stash create\" now errors out.\n   (merge d9b6634589 jc/fail-stash-to-store-non-stash later to maint).\n\n * The index file has room only for lower 32-bit of the file size in\n   the cached stat information, which means cached stat information\n   will have 0 in its sd_size member for a file whose size is multiple\n   of 4GiB.  This is mistaken for a racily clean path.  Avoid it by\n   storing a bogus sd_size value instead for such files.\n   (merge 5143ac07b1 bc/racy-4gb-files later to maint).\n\n * \"git p4\" tried to store symlinks to LFS when told, but has been\n   fixed not to do so, because it does not make sense.\n   (merge 10c89a02b0 mm/p4-symlink-with-lfs later to maint).\n\n * The codepath to handle recipient addresses `git send-email\n   --compose` learns from the user was completely broken, which has\n   been corrected.\n   (merge 3ec6167567 jk/send-email-fix-addresses-from-composed-messages later to maint).\n\n * \"cd sub && git grep -f patterns\" tried to read \"patterns\" file at\n   the top level of the working tree; it has been corrected to read\n   \"sub/patterns\" instead.\n\n\n * \"git reflog expire --single-worktree\" has been broken for the past\n   20 months or so, which has been corrected.\n\n * \"git send-email\" did not have certain pieces of data computed yet\n   when it tried to validate the outging messages and its recipient\n   addresses, which has been sorted out.\n\n * \"git bugreport\" learned to complain when it received a command line\n   argument that it will not use.\n\n * The codepath to traverse the commit-graph learned to notice that a\n   commit is missing (e.g., corrupt repository lost an object), even\n   though it knows something about the commit (like its parents) from\n   what is in commit-graph.\n   (merge 7a5d604443 ps/do-not-trust-commit-graph-blindly-for-existence later to maint).\n\n * \"git rev-list --missing\" did not work for missing commit objects,\n   which has been corrected.\n\n * \"git rev-list --unpacked --objects\" failed to exclude packed\n   non-commit objects, which has been corrected.\n   (merge 7b3c8e9f38 tb/rev-list-unpacked-fix later to maint).\n\n * Other code cleanup, docfix, build fix, etc.\n   (merge c2c349a15c xz/commit-title-soft-limit-doc later to maint).\n   (merge 1bd809938a tb/format-pack-doc-update later to maint).\n   (merge 8f81532599 an/clang-format-typofix later to maint).\n   (merge 3ca86adc2d la/strvec-header-fix later to maint).\n   (merge 6789275d37 jc/test-i18ngrep later to maint).\n   (merge 9972cd6004 ps/leakfixes later to maint).\n\n----------------------------------------------------------------\n\nChanges since v2.42.0 are as follows:\n\nAditya Neelamraju (1):\n      clang-format: fix typo in comment\n\nAlyssa Ross (1):\n      diff: fix --merge-base with annotated tags\n\nAndrei Rybak (1):\n      SubmittingPatches: call gitk's command \"Copy commit reference\"\n\nAndy Koppe (8):\n      pretty-formats: enclose options in angle brackets\n      decorate: refactor format_decorations()\n      decorate: avoid some unnecessary color overhead\n      decorate: color each token separately\n      pretty: add %(decorate[:<options>]) format\n      pretty: add pointer and tag options to %(decorate)\n      decorate: use commit color for HEAD arrow\n      pretty: fix ref filtering for %(decorate) formats\n\nBeat Bolli (1):\n      unicode: update the width tables to Unicode 15.1\n\nCaleb Hill (1):\n      git-clean doc: fix \"without do cleaning\" typo\n\nCalvin Wan (4):\n      hex-ll: separate out non-hash-algo functions\n      wrapper: reduce scope of remove_or_warn()\n      config: correct bad boolean env value error message\n      parse: separate out parsing functions from config.h\n\nChristian Couder (9):\n      pack-objects: allow `--filter` without `--stdout`\n      t/helper: add 'find-pack' test-tool\n      repack: refactor finishing pack-objects command\n      repack: refactor finding pack prefix\n      pack-bitmap-write: rebuild using new bitmap when remapping\n      repack: add `--filter=<filter-spec>` option\n      gc: add `gc.repackFilter` config option\n      repack: implement `--filter-to` for storing filtered out objects\n      gc: add `gc.repackFilterTo` config option\n\nChristian Hesse (2):\n      t/lib-gpg: forcibly run a trustdb update\n      t/t6300: drop magic filtering\n\nDerrick Stolee (13):\n      upload-pack: fix race condition in error messages\n      maintenance: add get_random_minute()\n      maintenance: use random minute in launchctl scheduler\n      maintenance: use random minute in Windows scheduler\n      maintenance: use random minute in cron scheduler\n      maintenance: swap method locations\n      maintenance: use random minute in systemd scheduler\n      maintenance: fix systemd schedule overlaps\n      maintenance: update schedule before config\n      scalar: add --[no-]src option\n      setup: add discover_git_directory_reason()\n      scalar reconfigure: help users remove buggy repos\n      mailmap: change primary address for Derrick Stolee\n\nDorcas AnonoLitunya (1):\n      t7601: use \"test_path_is_file\" etc. instead of \"test -f\"\n\nDragan Simic (2):\n      diff --stat: add config option to limit filename width\n      diff --stat: set the width defaults in a helper function\n\nDrew DeVault (1):\n      format-patch: --rfc honors what --subject-prefix sets\n\nElijah Newren (25):\n      documentation: wording improvements\n      documentation: fix small error\n      documentation: fix typos\n      documentation: fix apostrophe usage\n      documentation: add missing words\n      documentation: remove extraneous words\n      documentation: fix subject/verb agreement\n      documentation: employ consistent verb tense for a list\n      documentation: fix verb tense\n      documentation: fix adjective vs. noun\n      documentation: fix verb vs. noun\n      documentation: fix singular vs. plural\n      documentation: whitespace is already generally plural\n      documentation: fix choice of article\n      documentation: add missing article\n      documentation: remove unnecessary hyphens\n      documentation: add missing hyphens\n      documentation: use clearer prepositions\n      documentation: fix punctuation\n      documentation: fix capitalization\n      documentation: fix whitespace issues\n      documentation: add some commas where they are helpful\n      documentation: add missing fullstops\n      documentation: add missing quotes\n      documentation: add missing parenthesis\n\nEmily Shaffer (2):\n      t0091-bugreport: stop using i18ngrep\n      bugreport: reject positional arguments\n\nEric W. Biederman (1):\n      bulk-checkin: only support blobs in index_bulk_checkin\n\nEric Wong (1):\n      treewide: fix various bugs w/ OpenSSL 3+ EVP API\n\nEvan Gates (1):\n      git-config: fix misworded --type=path explanation\n\nHan Young (1):\n      show doc: redirect user to git log manual instead of git diff-tree\n\nIsoken June Ibizugbe (1):\n      builtin/branch.c: adjust error messages to coding guidelines\n\nJacob Abel (1):\n      builtin/worktree.c: fix typo in \"forgot fetch\" msg\n\nJacob Stopak (1):\n      Include gettext.h in MyFirstContribution tutorial\n\nJan Alexander Steffens (heftig) (6):\n      submodule--helper: use submodule_from_path in set-{url,branch}\n      submodule--helper: return error from set-url when modifying failed\n      t7419: actually test the branch switching\n      t7419, t7420: use test_cmp_config instead of grepping .gitmodules\n      t7419: test that we correctly handle renamed submodules\n      t7420: test that we correctly handle renamed submodules\n\nJason Hatton (1):\n      Prevent git from rehashing 4GiB files\n\nJavier Mora (2):\n      git-status.txt: fix minor asciidoc format issue\n      doc/git-bisect: clarify `git bisect run` syntax\n\nJeff King (114):\n      hashmap: use expected signatures for comparison functions\n      diff-files: avoid negative exit value\n      diff: show usage for unknown builtin_diff_files() options\n      diff: die when failing to read index in git-diff builtin\n      diff: drop useless return from run_diff_{files,index} functions\n      diff: drop useless return values in git-diff helpers\n      diff: drop useless \"status\" parameter from diff_result_code()\n      commit-graph: verify swapped zero/non-zero generation cases\n      test-lib: ignore uninteresting LSan output\n      sequencer: use repository parameter in short_commit_name()\n      sequencer: mark repository argument as unused\n      ref-filter: mark unused parameters in parser callbacks\n      pack-bitmap: mark unused parameters in show_object callback\n      worktree: mark unused parameters in each_ref_fn callback\n      commit-graph: mark unused data parameters in generation callbacks\n      ls-tree: mark unused parameter in callback\n      stash: mark unused parameter in diff callback\n      trace2: mark unused us_elapsed_absolute parameters\n      trace2: mark unused config callback parameter\n      test-trace2: mark unused argv/argc parameters\n      grep: mark unused parameter in output function\n      add-interactive: mark unused callback parameters\n      negotiator/noop: mark unused callback parameters\n      worktree: mark unused parameters in noop repair callback\n      imap-send: mark unused parameters with NO_OPENSSL\n      grep: mark unused parmaeters in pcre fallbacks\n      credential: mark unused parameter in urlmatch callback\n      fetch: mark unused parameter in ref_transaction callback\n      bundle-uri: mark unused parameters in callbacks\n      gc: mark unused descriptors in scheduler callbacks\n      update-ref: mark unused parameter in parser callbacks\n      ci: allow branch selection through \"vars\"\n      ci: deprecate ci/config/allow-ref script\n      merge: make xopts a strvec\n      merge: simplify parsing of \"-n\" option\n      format-patch: use OPT_STRING_LIST for to/cc options\n      tree-walk: reduce stack size for recursive functions\n      tree-walk: drop MAX_TRAVERSE_TREES macro\n      tree-walk: rename \"error\" variable\n      fsck: detect very large tree pathnames\n      add core.maxTreeDepth config\n      traverse_trees(): respect max_allowed_tree_depth\n      read_tree(): respect max_allowed_tree_depth\n      list-objects: respect max_allowed_tree_depth\n      tree-diff: respect max_allowed_tree_depth\n      lower core.maxTreeDepth default to 2048\n      checkout-index: delay automatic setting of to_tempfile\n      parse-options: prefer opt->value to globals in callbacks\n      parse-options: mark unused \"opt\" parameter in callbacks\n      merge: do not pass unused opt->value parameter\n      parse-options: add more BUG_ON() annotations\n      interpret-trailers: mark unused \"unset\" parameters in option callbacks\n      parse-options: mark unused parameters in noop callback\n      merge-ort: drop custom err() function\n      merge-ort: stop passing \"opt\" to read_oid_strbuf()\n      merge-ort: drop unused parameters from detect_and_process_renames()\n      merge-ort: drop unused \"opt\" parameter from merge_check_renames_reusable()\n      http: factor out matching of curl http/2 trace lines\n      http: update curl http/2 info matching for curl 8.3.0\n      merge-ort: lowercase a few error messages\n      fsmonitor: prefer repo_git_path() to git_pathdup()\n      fsmonitor/win32: drop unused parameters\n      fsmonitor: mark some maybe-unused parameters\n      fsmonitor/win32: mark unused parameter in fsm_os__incompatible()\n      fsmonitor: mark unused parameters in stub functions\n      fsmonitor/darwin: mark unused parameters in system callback\n      fsmonitor: mark unused hashmap callback parameters\n      run-command: mark unused parameters in start_bg_wait callbacks\n      test-lib: set UBSAN_OPTIONS to match ASan\n      commit-graph: factor out chain opening function\n      commit-graph: check mixed generation validation when loading chain file\n      t5324: harmonize sha1/sha256 graph chain corruption\n      commit-graph: detect read errors when verifying graph chain\n      commit-graph: tighten chain size check\n      commit-graph: report incomplete chains during verification\n      t6700: mark test as leak-free\n      commit-reach: free temporary list in get_octopus_merge_bases()\n      merge: free result of repo_get_merge_bases()\n      commit-graph: move slab-clearing to close_commit_graph()\n      commit-graph: free all elements of graph chain\n      commit-graph: delay base_graph assignment in add_graph_to_chain()\n      commit-graph: free graph struct that was not added to chain\n      commit-graph: free write-context entries before overwriting\n      commit-graph: free write-context base_graph_name during cleanup\n      commit-graph: clear oidset after finishing write\n      decorate: add clear_decoration() function\n      revision: clear decoration structs during release_revisions()\n      daemon: free listen_addr before returning\n      repack: free existing_cruft array after use\n      chunk-format: note that pair_chunk() is unsafe\n      t: add library for munging chunk-format files\n      midx: stop ignoring malformed oid fanout chunk\n      commit-graph: check size of oid fanout chunk\n      midx: check size of oid lookup chunk\n      commit-graph: check consistency of fanout table\n      midx: check size of pack names chunk\n      midx: enforce chunk alignment on reading\n      midx: check size of object offset chunk\n      midx: bounds-check large offset chunk\n      midx: check size of revindex chunk\n      commit-graph: check size of commit data chunk\n      commit-graph: detect out-of-bounds extra-edges pointers\n      commit-graph: bounds-check base graphs chunk\n      commit-graph: check size of generations chunk\n      commit-graph: bounds-check generation overflow chunk\n      commit-graph: check bounds when accessing BDAT chunk\n      commit-graph: check bounds when accessing BIDX chunk\n      commit-graph: detect out-of-order BIDX offsets\n      chunk-format: drop pair_chunk_unsafe()\n      t5319: make corrupted large-offset test more robust\n      doc/send-email: mention handling of \"reply-to\" with --compose\n      Revert \"send-email: extract email-parsing code into a subroutine\"\n      send-email: handle to/cc/bcc from --compose message\n      t: avoid perl's pack/unpack \"Q\" specifier\n\nJohannes Schindelin (19):\n      windows: ignore empty `PATH` elements\n      is_Cygwin: avoid `exec`ing anything\n      Move is_<platform> functions to the beginning\n      Move the `_which` function (almost) to the top\n      Work around Tcl's default `PATH` lookup\n      rebase: allow overriding the maximal length of the generated labels\n      ci: avoid building from the same commit in parallel\n      ci(linux-asan-ubsan): let's save some time\n      var: avoid a segmentation fault when `HOME` is unset\n      completion(switch/checkout): treat --track and -t the same\n      maintenance(systemd): support the Windows Subsystem for Linux\n      ci: add a GitHub workflow to submit Coverity scans\n      coverity: cache the Coverity Build Tool\n      coverity: allow overriding the Coverity project\n      coverity: support building on Windows\n      coverity: allow running on macOS\n      coverity: detect and report when the token or project is incorrect\n      max_tree_depth: lower it for MSVC to avoid stack overflows\n      ci: upgrade to using macos-13\n\nJohn Cai (3):\n      merge-ort: initialize repo in index state\n      attr: read attributes from HEAD when bare repo\n      attr: add attr.tree for setting the treeish to read attributes from\n\nJosh Soref (1):\n      Documentation/git-status: add missing line breaks\n\nJosip Sokcevic (1):\n      diff-lib: fix check_removed when fsmonitor is on\n\nJunio C Hamano (55):\n      update-index: do not read HEAD and MERGE_HEAD unconditionally\n      resolve-undo: allow resurrecting conflicted state that resolved to deletion\n      update-index: use unmerge_index_entry() to support removal\n      update-index: remove stale fallback code for \"--unresolve\"\n      checkout/restore: refuse unmerging paths unless checking out of the index\n      checkout/restore: add basic tests for --merge\n      checkout: allow \"checkout -m path\" to unmerge removed paths\n      mv: fix error for moving directory to another\n      diff: move the fallback \"--exit-code\" code down\n      diff: mode-only change should be noticed by \"--patch -w --exit-code\"\n      diff: teach \"--stat -w --exit-code\" to notice differences\n      t4040: remove test that succeeded for a wrong reason\n      pretty-formats: define \"literal formatting code\"\n      diff: spell DIFF_INDEX_CACHED out when calling run_diff_index()\n      diff: the -w option breaks --exit-code for --raw and other output modes\n      transfer.unpackLimit: fetch/receive.unpackLimit takes precedence\n      Start the 2.43 cycle\n      The second batch for 2.43\n      The extra batch to update credenthal helpers\n      The third batch\n      The fourth batch\n      The fifth batch\n      The sixth batch\n      The seventh batch\n      update-index doc: v4 is OK with JGit and libgit2\n      update-index: add --show-index-version\n      test-tool: retire \"index-version\"\n      The eighth batch\n      The ninth batch\n      The tenth batch\n      The eleventh batch\n      completion: loosen and document the requirement around completing alias\n      The twelfth batch\n      The thirteenth batch\n      The fourteenth batch\n      The fifteenth batch\n      doc: update list archive reference to use lore.kernel.org\n      The sixteenth batch\n      merge: introduce {copy|clear}_merge_options()\n      stash: be careful what we store\n      grep: -f <path> is relative to $cwd\n      The seventeenth batch\n      The eighteenth batch\n      commit: do not use cryptic \"new_index\" in end-user facing messages\n      The nineteenth batch\n      am: align placeholder for --whitespace option with apply\n      The twentieth batch\n      The twenty-first batch\n      The twenty-second batch\n      test framework: further deprecate test_i18ngrep\n      Git 2.42.1\n      tests: teach callers of test_i18ngrep to use test_grep\n      A bit more before -rc1\n      Prepare for -rc1\n      Git 2.43-rc1\n\nKarthik Nayak (3):\n      revision: rename bit to `do_not_die_on_missing_objects`\n      rev-list: move `show_commit()` to the bottom\n      rev-list: add commit object support in `--missing` option\n\nKousik Sanagavarapu (4):\n      ref-filter: sort numerically when \":size\" is used\n      t/t6300: cleanup test_atom\n      t/t6300: introduce test_bad_atom\n      ref-filter: add mailmap support\n\nKristoffer Haugsbakk (2):\n      range-diff: treat notes like `log`\n      grep: die gracefully when outside repository\n\nLinus Arver (17):\n      trailer tests: make test cases self-contained\n      trailer test description: this tests --where=after, not --where=before\n      trailer: add tests to check defaulting behavior with --no-* flags\n      trailer doc: narrow down scope of --where and related flags\n      trailer: trailer location is a place, not an action\n      trailer --no-divider help: describe usual \"---\" meaning\n      trailer --parse help: expose aliased options\n      trailer --only-input: prefer \"configuration variables\" over \"rules\"\n      trailer --parse docs: add explanation for its usefulness\n      trailer --unfold help: prefer \"reformat\" over \"join\"\n      trailer doc: emphasize the effect of configuration variables\n      trailer doc: separator within key suppresses default separator\n      trailer doc: <token> is a <key> or <keyAlias>, not both\n      trailer: separate public from internal portion of trailer_iterator\n      trailer: split process_input_file into separate pieces\n      trailer: split process_command_line_args into separate functions\n      strvec: drop unnecessary include of hex.h\n\nM Hickford (3):\n      credential/libsecret: store new attributes\n      credential/libsecret: erase matching creds only\n      credential/wincred: erase matching creds only\n\nMark Levedahl (6):\n      git gui Makefile - remove Cygwin modifications\n      git-gui - remove obsolete Cygwin specific code\n      git-gui - use cygstart to browse on Cygwin\n      git-gui - use mkshortcut on Cygwin\n      git-gui - re-enable use of hook scripts\n      git-gui - use git-hook, honor core.hooksPath\n\nMark Ruvald Pedersen (1):\n      sequencer: truncate labels to accommodate loose refs\n\nMartin Ågren (1):\n      git-merge-file doc: drop \"-file\" from argument placeholders\n\nMatthew McClain (1):\n      git-p4 shouldn't attempt to store symlinks in LFS\n\nMichael Strawbridge (1):\n      send-email: move validation code below process_address_list\n\nMichal Suchanek (1):\n      git-push doc: more visibility for -q option\n\nNaomi Ibe (1):\n      builtin/add.c: clean up die() messages\n\nOswald Buddenhagen (16):\n      t/lib-rebase: set_fake_editor(): fix recognition of reset's short command\n      t/lib-rebase: set_fake_editor(): handle FAKE_LINES more consistently\n      sequencer: simplify allocation of result array in todo_list_rearrange_squash()\n      t/lib-rebase: improve documentation of set_fake_editor()\n      t9001: fix indentation in test_no_confirm()\n      format-patch: add --description-file option\n      sequencer: rectify empty hint in call of require_clean_work_tree()\n      sequencer: beautify subject of reverts of reverts\n      git-revert.txt: add discussion\n      sequencer: fix error message on failure to copy SQUASH_MSG\n      t3404-rebase-interactive.sh: fix typos in title of a rewording test\n      sequencer: remove unreachable exit condition in pick_commits()\n      am: fix error message in parse_opt_show_current_patch()\n      rebase: simplify code related to imply_merge()\n      rebase: handle --strategy via imply_merge() as well\n      rebase: move parse_opt_keep_empty() down\n\nPatrick Steinhardt (23):\n      upload-pack: fix exit code when denying fetch of unreachable object ID\n      revision: make pseudo-opt flags read via stdin behave consistently\n      doc/git-worktree: mention \"refs/rewritten\" as per-worktree refs\n      doc/git-repack: fix syntax for `-g` shorthand option\n      doc/git-repack: don't mention nonexistent \"--unpacked\" option\n      commit-graph: introduce envvar to disable commit existence checks\n      commit: detect commits that exist in commit-graph but not in the ODB\n      builtin/show-ref: convert pattern to a local variable\n      builtin/show-ref: split up different subcommands\n      builtin/show-ref: fix leaking string buffer\n      builtin/show-ref: fix dead code when passing patterns\n      builtin/show-ref: refactor `--exclude-existing` options\n      builtin/show-ref: stop using global variable to count matches\n      builtin/show-ref: stop using global vars for `show_one()`\n      builtin/show-ref: refactor options for patterns subcommand\n      builtin/show-ref: ensure mutual exclusiveness of subcommands\n      builtin/show-ref: explicitly spell out different modes in synopsis\n      builtin/show-ref: add new mode to check for reference existence\n      t: use git-show-ref(1) to check for ref existence\n      test-bloom: stop setting up Git directory twice\n      shallow: fix memory leak when registering shallow roots\n      setup: refactor `upgrade_repository_format()` to have common exit\n      setup: fix leaking repository format\n\nPhilippe Blain (3):\n      completion: commit: complete configured trailer tokens\n      completion: commit: complete trailers tokens more robustly\n      completion: improve doc for complex aliases\n\nPhillip Wood (7):\n      rebase -i: move unlink() calls\n      rebase -i: remove patch file after conflict resolution\n      sequencer: use rebase_path_message()\n      sequencer: factor out part of pick_commits()\n      rebase: fix rewritten list for failed pick\n      rebase --continue: refuse to commit after failed command\n      rebase -i: fix adding failed command to the todo list\n\nRené Scharfe (18):\n      subtree: disallow --no-{help,quiet,debug,branch,message}\n      t1502, docs: disallow --no-help\n      t1502: move optionspec help output to a file\n      t1502: test option negation\n      parse-options: show negatability of options in short help\n      parse-options: factor out usage_indent() and usage_padding()\n      parse-options: no --[no-]no-...\n      parse-options: simplify usage_padding()\n      parse-options: allow omitting option help text\n      name-rev: use OPT_HIDDEN_BOOL for --peel-tag\n      grep: use OPT_INTEGER_F for --max-depth\n      grep: reject --no-or\n      diff --no-index: fix -R with stdin\n      parse-options: drop unused parse_opt_ctx_t member\n      parse-options: make CMDMODE errors more precise\n      am: simplify --show-current-patch handling\n      am, rebase: fix arghelp syntax of --empty\n      reflog: fix expire --single-worktree\n\nRobert Coup (1):\n      upload-pack: add tracing for fetches\n\nRubén Justo (2):\n      branch: error message deleting a branch in use\n      branch: error message checking out a branch in use\n\nSergey Organov (4):\n      doc/diff-options: fix link to generating patch section\n      diff-merges: improve --diff-merges documentation\n      diff-merges: introduce '--dd' option\n      completion: complete '--dd'\n\nShuqi Liang (3):\n      t1092: add tests for 'git check-attr'\n      attr.c: read attributes in a sparse directory\n      check-attr: integrate with sparse-index\n\nTang Yuyi (1):\n      merge-tree: add -X strategy option\n\nTaylor Blau (28):\n      repack: move `pack_geometry` struct to the stack\n      commit-graph: introduce `commit_graph_generation_from_graph()`\n      t/t5318-commit-graph.sh: test generation zero transitions during fsck\n      commit-graph: avoid repeated mixed generation number warnings\n      leak tests: mark a handful of tests as leak-free\n      leak tests: mark t3321-notes-stripspace.sh as leak-free\n      leak tests: mark t5583-push-branches.sh as leak-free\n      builtin/pack-objects.c: remove unnecessary strbuf_reset()\n      builtin/pack-objects.c: support `--max-pack-size` with `--cruft`\n      Documentation/gitformat-pack.txt: remove multi-cruft packs alternative\n      Documentation/gitformat-pack.txt: drop mixed version section\n      builtin/repack.c: extract structure to store existing packs\n      builtin/repack.c: extract marking packs for deletion\n      builtin/repack.c: extract redundant pack cleanup for --geometric\n      builtin/repack.c: extract redundant pack cleanup for existing packs\n      builtin/repack.c: extract `has_existing_non_kept_packs()`\n      builtin/repack.c: store existing cruft packs separately\n      builtin/repack.c: avoid directly inspecting \"util\"\n      builtin/repack.c: extract common cruft pack loop\n      git-send-email.perl: avoid printing undef when validating addresses\n      t7700: split cruft-related tests to t7704\n      builtin/repack.c: parse `--max-pack-size` with OPT_MAGNITUDE\n      builtin/repack.c: implement support for `--max-cruft-size`\n      builtin/repack.c: avoid making cruft packs preferred\n      Documentation/gitformat-pack.txt: fix typo\n      Documentation/gitformat-pack.txt: fix incorrect MIDX documentation\n      list-objects: drop --unpacked non-commit objects from results\n      pack-bitmap: drop --unpacked non-commit objects from results\n\nTodd Zullinger (2):\n      RelNotes: minor typo fixes in 2.43.0 draft\n      RelNotes: improve wording of credential helper notes\n\nVictoria Dye (4):\n      ref-cache.c: fix prefix matching in ref iteration\n      dir.[ch]: expose 'get_dtype'\n      dir.[ch]: add 'follow_symlink' arg to 'get_dtype'\n      files-backend.c: avoid stat in 'loose_fill_ref_dir'\n\nVipul Kumar (1):\n      git-gui: Fix a typo in README\n\nWesley Schwengle (2):\n      git-push.txt: fix grammar\n      git-svn: drop FakeTerm hack\n\nbrian m. carlson (2):\n      t: add a test helper to truncate files\n      merge-file: add an option to process object IDs\n\nÆvar Arnfjörð Bjarmason (1):\n      Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4\n\nŠtěpán Němec (6):\n      doc: fix some typos, grammar and wording issues\n      doc/diff-options: improve wording of the log.diffMerges mention\n      git-jump: admit to passing merge mode args to ls-files\n      doc/gitk: s/sticked/stuck/\n      t/README: fix multi-prerequisite example\n      doc/cat-file: make synopsis and description less confusing\n\n王常新 (1):\n      merge-ort.c: fix typo 'neeed' to 'needed'\n\n谢致邦 (XIE Zhibang) (2):\n      doc: correct the 50 characters soft limit\n      doc: correct the 50 characters soft limit (+)\n\n"},{"id":"484693","messageId":"8d5af6f6-3d4e-41bc-bc91-039db5628f26@gmail.com","threadId":"60492","inReplyTo":"xmqq8r785ev1.fsf@gitster.g","subject":"Re: [ANNOUNCE] Git v2.43.0-rc1","fromName":"Andy Koppe","fromEmail":"andy.koppe@gmail.com","sentAt":"2023-11-10T07:59:31Z","receivedAt":"2023-11-10T07:59:38Z","isPatch":false,"sender":{"key":"andy.koppe@gmail.com","avatar":"https://avatars.githubusercontent.com/u/223411?v=4"},"body":"On 08/11/2023 17:33, Junio C Hamano wrote:\n>   * \"git log --format\" has been taught the %(decorate) placeholder.\n\n* \"git log --format\" has been taught the %(decorate) placeholder for\n   customizing the symbols used in ref decorations.\n?\n\nRegards,\nAndy\n"},{"id":"484815","messageId":"20231113205538.GA2028092@coredump.intra.peff.net","threadId":"60492","inReplyTo":"xmqq8r785ev1.fsf@gitster.g","subject":"commit-graph paranoia performance, was Re: [ANNOUNCE] Git v2.43.0-rc1","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2023-11-13T20:55:38Z","receivedAt":"2023-11-13T20:55:40Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Thu, Nov 09, 2023 at 02:33:54AM +0900, Junio C Hamano wrote:\n\n>  * The codepath to traverse the commit-graph learned to notice that a\n>    commit is missing (e.g., corrupt repository lost an object), even\n>    though it knows something about the commit (like its parents) from\n>    what is in commit-graph.\n>    (merge 7a5d604443 ps/do-not-trust-commit-graph-blindly-for-existence later to maint).\n\nI happened to be timing \"rev-list\" for an unrelated topic today, and I\nnoticed that this change had a rather large effect. The commit message\nfor 7a5d604443 claims a 30% performance regression. But that's when\nusing \"--topo-order\", and actually writing out the result.\n\nRunning \"rev-list --count\" on a copy of linux.git with a fully-built\ncommit-graph shows that the run-time doubles:\n\n  Benchmark 1: git.v2.42.1 rev-list --count HEAD\n    Time (mean ± σ):     658.0 ms ±   5.2 ms    [User: 613.5 ms, System: 44.4 ms]\n    Range (min … max):   650.2 ms … 666.0 ms    10 runs\n  \n  Benchmark 2: git.v2.43.0-rc1 rev-list --count HEAD\n    Time (mean ± σ):      1.333 s ±  0.019 s    [User: 1.263 s, System: 0.069 s]\n    Range (min … max):    1.302 s …  1.361 s    10 runs\n  \n  Summary\n    git.v2.42.1 rev-list --count HEAD ran\n      2.03 ± 0.03 times faster than git.v2.43.0-rc1 rev-list --count HEAD\n\nNow in defense of that patch, this particular command is going to be one\nof the most sensitive in terms of percent change, simply because it\nisn't doing much besides walking the commits. And 650ms isn't _that_ big\nin an absolute sense. But it also doesn't quite feel like nothing, even\ntacked onto a command that might otherwise take 1000ms to run.\n\nShould we default GIT_COMMIT_GRAPH_PARANOIA to \"0\"? Yes, some operations\nmight miss a breakage, but that is true of so much of Git. For day to\nday commands we generally assume that the repository is not corrupted,\nand avoid looking at any data we can. Other commands (like \"commit-graph\nverify\", but maybe others) would probably want to be more careful\n(either by checking this case explicitly, or by enabling the paranoia\nflag themselves).\n\n-Peff\n"},{"id":"484828","messageId":"xmqq8r7143i9.fsf@gitster.g","threadId":"60492","inReplyTo":"20231113205538.GA2028092@coredump.intra.peff.net","subject":"Re: commit-graph paranoia performance, was Re: [ANNOUNCE] Git v2.43.0-rc1","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2023-11-13T23:50:22Z","receivedAt":"2023-11-13T23:50:28Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jeff King <peff@peff.net> writes:\n\n> Should we default GIT_COMMIT_GRAPH_PARANOIA to \"0\"? Yes, some operations\n> might miss a breakage, but that is true of so much of Git. For day to\n> day commands we generally assume that the repository is not corrupted,\n> and avoid looking at any data we can. Other commands (like \"commit-graph\n> verify\", but maybe others) would probably want to be more careful\n> (either by checking this case explicitly, or by enabling the paranoia\n> flag themselves).\n\nI am obviously fine with that direction, as that was exactly the\nstance I took when we discussed the topic on \"rev-list --missing\"\n;-)\n\nPatrick?  Karthik?\n"},{"id":"484847","messageId":"ZVMz4iDWfC__H8Jp@tanuki","threadId":"60492","inReplyTo":"20231113205538.GA2028092@coredump.intra.peff.net","subject":"Re: commit-graph paranoia performance, was Re: [ANNOUNCE] Git v2.43.0-rc1","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2023-11-14T08:46:26Z","receivedAt":"2023-11-14T08:46:52Z","isPatch":false,"sender":{"key":"ps@pks.im","avatar":"https://avatars.githubusercontent.com/u/4056630?v=4"},"body":"On Mon, Nov 13, 2023 at 03:55:38PM -0500, Jeff King wrote:\n> On Thu, Nov 09, 2023 at 02:33:54AM +0900, Junio C Hamano wrote:\n> \n> >  * The codepath to traverse the commit-graph learned to notice that a\n> >    commit is missing (e.g., corrupt repository lost an object), even\n> >    though it knows something about the commit (like its parents) from\n> >    what is in commit-graph.\n> >    (merge 7a5d604443 ps/do-not-trust-commit-graph-blindly-for-existence later to maint).\n> \n> I happened to be timing \"rev-list\" for an unrelated topic today, and I\n> noticed that this change had a rather large effect. The commit message\n> for 7a5d604443 claims a 30% performance regression. But that's when\n> using \"--topo-order\", and actually writing out the result.\n> \n> Running \"rev-list --count\" on a copy of linux.git with a fully-built\n> commit-graph shows that the run-time doubles:\n> \n>   Benchmark 1: git.v2.42.1 rev-list --count HEAD\n>     Time (mean ± σ):     658.0 ms ±   5.2 ms    [User: 613.5 ms, System: 44.4 ms]\n>     Range (min … max):   650.2 ms … 666.0 ms    10 runs\n>   \n>   Benchmark 2: git.v2.43.0-rc1 rev-list --count HEAD\n>     Time (mean ± σ):      1.333 s ±  0.019 s    [User: 1.263 s, System: 0.069 s]\n>     Range (min … max):    1.302 s …  1.361 s    10 runs\n>   \n>   Summary\n>     git.v2.42.1 rev-list --count HEAD ran\n>       2.03 ± 0.03 times faster than git.v2.43.0-rc1 rev-list --count HEAD\n\nAh, indeed. I thought I already benchmarked the worst-case behaviour by\nsimply doing a full graph walk, but of course the performance hit is\neven worse when not outputting the commits at all but only counting\nthem.\n\n> Now in defense of that patch, this particular command is going to be one\n> of the most sensitive in terms of percent change, simply because it\n> isn't doing much besides walking the commits. And 650ms isn't _that_ big\n> in an absolute sense. But it also doesn't quite feel like nothing, even\n> tacked onto a command that might otherwise take 1000ms to run.\n> \n> Should we default GIT_COMMIT_GRAPH_PARANOIA to \"0\"? Yes, some operations\n> might miss a breakage, but that is true of so much of Git. For day to\n> day commands we generally assume that the repository is not corrupted,\n> and avoid looking at any data we can. Other commands (like \"commit-graph\n> verify\", but maybe others) would probably want to be more careful\n> (either by checking this case explicitly, or by enabling the paranoia\n> flag themselves).\n> \n> -Peff\n\nI'd be fine with that as a follow-up change, yes. I agree that in\ngeneral we shouldn't see this kind of corruption, and it's good that the\nbehaviour can be toggled so easily now.\n\nI'm happy to write that patch if you don't plan to.\n\nPatrick\n"},{"id":"484853","messageId":"20231114090506.GA2107135@coredump.intra.peff.net","threadId":"60492","inReplyTo":"ZVMz4iDWfC__H8Jp@tanuki","subject":"Re: commit-graph paranoia performance, was Re: [ANNOUNCE] Git v2.43.0-rc1","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2023-11-14T09:05:06Z","receivedAt":"2023-11-14T09:05:09Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Nov 14, 2023 at 09:46:26AM +0100, Patrick Steinhardt wrote:\n\n> > Should we default GIT_COMMIT_GRAPH_PARANOIA to \"0\"? Yes, some operations\n> > might miss a breakage, but that is true of so much of Git. For day to\n> > day commands we generally assume that the repository is not corrupted,\n> > and avoid looking at any data we can. Other commands (like \"commit-graph\n> > verify\", but maybe others) would probably want to be more careful\n> > (either by checking this case explicitly, or by enabling the paranoia\n> > flag themselves).\n> \n> I'd be fine with that as a follow-up change, yes. I agree that in\n> general we shouldn't see this kind of corruption, and it's good that the\n> behaviour can be toggled so easily now.\n> \n> I'm happy to write that patch if you don't plan to.\n\nI hadn't started on it, so please feel free to go ahead.\n\n-Peff\n"}]}