{"thread":{"id":"60138","subject":"[ANNOUNCE] Git v2.42.0","startedAt":"2023-08-21T18:12:32Z","lastAt":"2023-08-21T18:12:32Z","messageCount":1,"participants":["Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"480852","messageId":"xmqqr0nwp8mv.fsf@gitster.g","threadId":"60138","inReplyTo":null,"subject":"[ANNOUNCE] Git v2.42.0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2023-08-21T18:12:24Z","receivedAt":"2023-08-21T18:12:32Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"The latest feature release Git v2.42.0 is now available at the\nusual places.  It is comprised of 453 non-merge commits since\nv2.41.0, contributed by 78 people, 17 of which are new faces [*].\n\nThe tarballs are found at:\n\n    https://www.kernel.org/pub/software/scm/git/\n\nThe following public repositories all have a copy of the 'v2.42.0'\ntag 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.41.0 are as follows.\nWelcome to the Git development community!\n\n  Adam Majer, Andreas Herrmann, Greg Alexander, Han Young, Jacob\n  Abel, Jan Klötzke, Jim Pryor, Johan Ruokangas, Josh Sref,\n  Josip Sokcevic, Louis Strous, Lumynous, Petar Vutov, Premek\n  Vysoky, Sebastian Thiel, Tribo Dar, and Vinayak Dev.\n\nReturning contributors who helped this release are as follows.\nThanks for your continued support.\n\n  , Alejandro R. Sedeño, Alex Henrie, Arkadii Yakovets, Bagas\n  Sanjaya, Beat Bolli, brian m. carlson, Calvin Wan, Carlo Marcelo\n  Arenas Belón, Christian Couder, D. Ben Knoble, Derrick Stolee,\n  Dimitriy Ryazantcev, Elijah Newren, Emir SARI, Eric Sunshine,\n  Eric Wong, Glen Choo, Hariom Verma, Jacob Keller, Jaydeep Das,\n  Jean-Noël Avila, Jeff King, Johannes Schindelin, John Cai,\n  Jonathan Nieder, Jonathan Tan, Jordi Mas, Junio C Hamano,\n  Kate Golovanova, Kousik Sanagavarapu, Kristoffer Haugsbakk,\n  Linus Arver, Martin Ågren, Matthew Hughes, Matthias Aßhauer, M\n  Hickford, Michael Haggerty, Mike Hommey, Nsengiyumva Wilberforce,\n  Oswald Buddenhagen, Patrick Steinhardt, Peter Krefting,\n  Philippe Blain, Phillip Wood, Ralf Thielow, Randall S. Becker,\n  René Scharfe, Rubén Justo, Sean Allred, Shuqi Liang, SZEDER\n  Gábor, Taylor Blau, Teng Long, Todd Zullinger, Toon Claes,\n  Torsten Bögershausen, Victoria Dye, Yi-Jyun Pan, Yuyi Wang,\n  and ZheNing Hu.\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.42 Release Notes\n=======================\n\nUI, Workflows & Features\n\n * \"git pack-refs\" learns \"--include\" and \"--exclude\" to tweak the ref\n   hierarchy to be packed using pattern matching.\n\n * 'git worktree add' learned how to create a worktree based on an\n   orphaned branch with `--orphan`.\n\n * \"git pack-objects\" learned to invoke a new hook program that\n   enumerates extra objects to be used as anchoring points to keep\n   otherwise unreachable objects in cruft packs.\n\n * Add more \"git var\" for toolsmiths to learn various locations Git is\n   configured with either via the configuration or hard-coded defaults.\n\n * 'git notes append' was taught '--separator' to specify string to insert\n   between paragraphs.\n\n * The \"git for-each-ref\" family of commands learned placeholders\n   related to GPG signature verification.\n\n * \"git diff --no-index\" learned to read from named pipes as if they\n   were regular files, to allow \"git diff <(process) <(substitution)\"\n   some shells support.\n\n * Help newbies by suggesting that there are cases where force-pushing\n   is a valid and sensible thing to update a branch at a remote\n   repository, rather than reconciling with merge/rebase.\n\n * \"git blame --contents=file\" has been taught to work in a bare\n   repository.\n\n * \"git branch -f X\" to repoint the branch X said that X was \"checked\n   out\" in another worktree, even when branch X was not and instead\n   being bisected or rebased.  The message was reworded to say the\n   branch was \"in use\".\n\n * Tone down the warning on SHA-256 repositories being an experimental\n   curiosity.  We do not have support for them to interoperate with\n   traditional SHA-1 repositories, but at this point, we do not plan\n   to make breaking changes to SHA-256 repositories and there is no\n   longer need for such a strongly phrased warning.\n\n\nPerformance, Internal Implementation, Development Support etc.\n\n * \"git diff-tree\" has been taught to take advantage of the\n   sparse-index feature.\n\n * Clang's sanitizer implementation seems to work better than GCC's.\n   (merge d88d727143 jk/ci-use-clang-for-sanitizer-jobs later to maint).\n\n * The object traversal using reachability bitmap done by\n   \"pack-object\" has been tweaked to take advantage of the fact that\n   using \"boundary\" commits as representative of all the uninteresting\n   ones can save quite a lot of object enumeration.\n\n * discover_git_directory() no longer touches the_repository.\n\n * \"git worktree\" learned to work better with sparse index feature.\n\n * When the external merge driver is killed by a signal, its output\n   should not be trusted as a resolution with conflicts that is\n   proposed by the driver, but the code did.\n\n * The set-up code for the get_revision() API now allows feeding\n   options like --all and --not in the --stdin mode.\n\n * Move functions that are not about pure string manipulation out of\n   strbuf.[ch]\n\n * \"imap-send\" codepaths got cleaned up to get rid of unused\n   parameters.\n\n * Enumerating refs in the packed-refs file, while excluding refs that\n   match certain patterns, has been optimized.\n\n * Mark-up unused parameters in the code so that we can eventually\n   enable -Wunused-parameter by default.\n\n * Instead of inventing a custom counter variables for debugging,\n   use existing trace2 facility in the fsync customization codepath.\n\n * \"git branch --list --format=<format>\" and friends are taught\n   a new \"%(describe)\" placeholder.\n\n * Clarify how to choose the starting point for a new topic in\n   developer guidance document.\n\n * The implementation of \"get_sha1_hex()\" that reads a hexadecimal\n   string that spells a full object name has been extended to cope\n   with any hash function used in the repository, but the \"sha1\" in\n   its name survived.  Rename it to get_hash_hex(), a name that is\n   more consistent within its friends like get_hash_hex_algop().\n\n * Command line parser fix, and a small parse-options API update.\n\n\nFixes since v2.41\n-----------------\n\n * \"git tag\" learned to leave the \"$GIT_DIR/TAG_EDITMSG\" file when the\n   command failed, so that the user can salvage what they typed.\n   (merge 08c12ec1d0 kh/keep-tag-editmsg-upon-failure later to maint).\n\n * The \"-s\" (silent, squelch) option of the \"diff\" family of commands\n   did not interact with other options that specify the output format\n   well.  This has been cleaned up so that it will clear all the\n   formatting options given before.\n   (merge 9d484b92ed jc/diff-s-with-other-options later to maint).\n\n * Update documentation regarding Coccinelle patches.\n   (merge 3bd0097cfc gc/doc-cocci-updates later to maint).\n\n * Some atoms that can be used in \"--format=<format>\" for \"git ls-tree\"\n   were not supported by \"git ls-files\", even though they were relevant\n   in the context of the latter.\n   (merge 4d28c4f75f zh/ls-files-format-atoms later to maint).\n\n * Document more pseudo-refs and teach the command line completion\n   machinery to complete AUTO_MERGE.\n   (merge 982ff3a649 pb/complete-and-document-auto-merge-and-friends later to maint).\n\n * \"git submodule\" code trusted the data coming from the config (and\n   the in-tree .gitmodules file) too much without validating, leading\n   to NULL dereference if the user mucks with a repository (e.g.\n   submodule.<name>.url is removed).  This has been corrected.\n   (merge fbc806acd1 tb/submodule-null-deref-fix later to maint).\n\n * The value of config.worktree is per-repository, but has been kept\n   in a singleton global variable per process. This has been OK as\n   most Git operations interacted with a single repository at a time,\n   but not right for operations like recursive \"grep\" that want to\n   access multiple repositories from a single process without forking.\n\n   The global variable has been eliminated and made into a member in\n   the per-repository data structure.\n   (merge 3867f6d650 vd/worktree-config-is-per-repository later to maint).\n\n * \"git [-c log.follow=true] log [--follow] ':(glob)f**'\" used to barf.\n   (merge 8260bc5902 jk/log-follow-with-non-literal-pathspec later to maint).\n\n * Introduce a mechanism to disable replace refs globally and per\n   repository.\n   (merge 9c7d1b057f ds/disable-replace-refs later to maint).\n\n * \"git cat-file --batch\" and friends learned \"-Z\" that uses NUL\n   delimiter for both input and output.\n   (merge f79e18849b ps/cat-file-null-output later to maint).\n\n * The reimplemented \"git add -i\" did not honor color.ui configuration.\n   (merge 6f74648cea ds/add-i-color-configuration-fix later to maint).\n\n * Compilation fix for platforms without D_TYPE in struct dirent.\n   (merge 03bf92b9bf as/dtype-compilation-fix later to maint).\n\n * Suggest to refrain from using hex literals that are non-portable\n   when writing printf(1) format strings.\n   (merge f0b68f0546 jt/doc-use-octal-with-printf later to maint).\n\n * Simplify error message when run-command fails to start a command.\n   (merge 6d224ac286 rs/run-command-exec-error-on-noent later to maint).\n\n * Gracefully deal with a stale MIDX file that lists a packfile that\n   no longer exists.\n   (merge 06f3867865 tb/open-midx-bitmap-fallback later to maint).\n\n * Even when diff.ignoreSubmodules tells us to ignore submodule\n   changes, \"git commit\" with an index that already records changes to\n   submodules should include the submodule changes in the resulting\n   commit, but it did not.\n   (merge 5768478edc js/defeat-ignore-submodules-config-with-explicit-addition later to maint).\n\n * When \"git commit --trailer=...\" invokes the interpret-trailers\n   machinery, it knows what it feeds to interpret-trailers is a full\n   log message without any patch, but failed to express that by\n   passing the \"--no-divider\" option, which has been corrected.\n   (merge be3d654343 jk/commit-use-no-divider-with-interpret-trailers later to maint).\n\n * Avoid breakage of \"git pack-objects --cruft\" due to inconsistency\n   between the way the code enumerates packfiles in the repository.\n   (merge 73320e49ad tb/collect-pack-filenames-fix later to maint).\n\n * We create .pack and then .idx, we consider only packfiles that have\n   .idx usable (those with only .pack are not ready yet), so we should\n   remove .idx before removing .pack for consistency.\n   (merge 0dd1324a73 ds/remove-idx-before-pack later to maint).\n\n * Partially revert a sanity check that the rest of the config code\n   was not ready, to avoid triggering it in a corner case.\n   (merge a53f43f900 gc/config-partial-submodule-kvi-fix later to maint).\n\n * \"git apply\" punts when it is fed too large a patch input; the error\n   message it gives when it happens has been clarified.\n   (merge 42612e18d2 pw/apply-too-large later to maint).\n\n * During a cherry-pick or revert session that works on multiple\n   commits, \"git status\" did not give correct information, which has\n   been corrected.\n   (merge a096a889f4 jk/cherry-pick-revert-status later to maint).\n\n * A few places failed to differentiate the case where the index is\n   truly empty (nothing added) and we haven't yet read from the\n   on-disk index file, which have been corrected.\n   (merge 2ee045eea1 js/empty-index-fixes later to maint).\n\n * \"git bugreport\" tests did not test what it wanted to test, which\n   has been corrected.\n   (merge 1aa92b8500 ma/t0091-fixup later to maint).\n\n * Code snippets in a tutorial document no longer compiled after\n   recent header shuffling, which have been corrected.\n   (merge bbd7c7b7c0 vd/adjust-mfow-doc-to-updated-headers later to maint).\n\n * \"git ls-files '(attr:X)D/'\" that triggers the common prefix\n   optimization codepath failed to read from \"D/.gitattributes\",\n   which has been corrected.\n   (merge f4a8fde057 jc/pathspec-match-with-common-prefix later to maint).\n\n * \"git fsck --no-progress\" still spewed noise from the commit-graph\n   subsystem, which has been corrected.\n   (merge 9281cd07f0 tb/fsck-no-progress later to maint).\n\n * Various offset computation in the code that accesses the packfiles\n   and other data in the object layer has been hardened against\n   arithmetic overflow, especially on 32-bit systems.\n   (merge 9a25cad7e0 tb/object-access-overflow-protection later to maint).\n\n * Names of MinGW header files are spelled in mixed case in some\n   source files, but the build host can be using case sensitive\n   filesystem with header files with their name spelled in all\n   lowercase.\n   (merge 4a53d0d0bc mh/mingw-case-sensitive-build later to maint).\n\n * Update message mark-up for i18n in \"git bundle\".\n   (merge bbb6acd998 dk/bundle-i18n-more later to maint).\n\n * \"git tag --list --points-at X\" showed tags that directly refers to\n   object X, but did not list a tag that points at such a tag, which\n   has been corrected.\n\n * \"./configure --with-expat=no\" did not work as a way to refuse use\n   of the expat library on a system with the library installed, which\n   has been corrected.\n   (merge fb8f7269c2 ah/autoconf-fixes later to maint).\n\n * When the user edits \"rebase -i\" todo file so that it starts with a\n   \"fixup\", which would make it invalid, the command truncated the\n   rest of the file before giving an error and returning the control\n   back to the user.  Stop truncating to make it easier to correct\n   such a malformed todo file.\n   (merge 9645a087c2 ah/sequencer-rewrite-todo-fix later to maint).\n\n * Rewrite the description of giving a custom command to the\n   submodule.<name>.update configuration variable.\n   (merge 7cebc5bd78 pv/doc-submodule-update-settings later to maint).\n\n * Adjust to OpenSSL 3+, which deprecates its SHA-1 functions based on\n   its traditional API, by using its EVP API instead.\n   (merge bda9c12073 ew/hash-with-openssl-evp later to maint).\n\n * Exclude \".\" from the set of characters to be removed from the\n   beginning and the end of the human-readable name.\n   (merge 1c04cb0744 bc/ident-dot-is-no-longer-crud-letter later to maint).\n\n * \"git bisect visualize\" stopped running \"gitk\" on Git for Windows\n   when the command was reimplemented in C around Git 2.34 timeframe.\n   This has been corrected.\n   (merge fff1594fa7 ma/locate-in-path-for-windows later to maint).\n\n * \"git rebase -i\" with a series of squash/fixup, when one of the\n   steps stopped in conflicts and ended up getting skipped, did not\n   handle the accumulated commit log messages, which has been\n   corrected.\n   (merge 6ce7afe163 pw/rebase-skip-commit-message-fix later to maint).\n\n * Adjust to newer Term::ReadLine to prevent it from breaking\n   the interactive prompt code in send-email.\n   (merge c016726c2d jk/send-email-with-new-readline later to maint).\n\n * Windows updates.\n   (merge 0050f8e401 ds/maintenance-on-windows-fix later to maint).\n\n * Correct use of lstat() that assumed a failing call would not\n   clobber the statbuf.\n   (merge 72695d8214 st/mv-lstat-fix later to maint).\n\n * Other code cleanup, docfix, build fix, etc.\n   (merge 51f9d2e563 sa/doc-ls-remote later to maint).\n   (merge c6d26a9dda jk/format-patch-message-id-unleak later to maint).\n   (merge f7e063f326 ps/fetch-cleanups later to maint).\n   (merge e4cf013468 tl/quote-problematic-arg-for-clarity later to maint).\n   (merge 20025fdfc7 tz/test-ssh-verifytime-fix later to maint).\n   (merge e48a21df65 tz/test-fix-pthreads-prereq later to maint).\n   (merge 68b51172e3 mh/commit-reach-get-reachable-plug-leak later to maint).\n   (merge aeee1408ce kh/use-default-notes-doc later to maint).\n   (merge 3b8724bce6 jc/test-modernization later to maint).\n   (merge 447a3b7331 jc/test-modernization-2 later to maint).\n   (merge d57fa7fc73 la/doc-interpret-trailers later to maint).\n   (merge 548afb0d9a la/docs-typofixes later to maint).\n   (merge 3744ffcbcd rs/doc-ls-tree-hex-literal later to maint).\n   (merge 6c26da8404 mh/credential-erase-improvements later to maint).\n   (merge 78e56cff69 tz/lib-gpg-prereq-fix later to maint).\n   (merge 80d32e84b5 rj/leakfixes later to maint).\n   (merge 0a868031ed pb/complete-diff-options later to maint).\n   (merge d4f28279ad jc/doc-hash-object-types later to maint).\n   (merge 1876a5ae15 ks/t4205-test-describe-with-abbrev-fix later to maint).\n   (merge 6e6a529b57 jk/fsck-indices-in-worktrees later to maint).\n   (merge 3e81b896f7 rs/packet-length-simplify later to maint).\n   (merge 4c9cb51fe7 mh/doc-credential-helpers later to maint).\n   (merge 3437f549dd jr/gitignore-doc-example-markup later to maint).\n   (merge 947ebd62a0 jc/am-parseopt-fix later to maint).\n   (merge e12cb98e1e jc/branch-parseopt-fix later to maint).\n   (merge d6f598e443 jc/gitignore-doc-pattern-markup later to maint).\n   (merge a2dad4868b jc/transport-parseopt-fix later to maint).\n   (merge 68cbb20e73 jc/parse-options-show-branch later to maint).\n   (merge 3821eb6c3d jc/parse-options-reset later to maint).\n   (merge c48af99a3e bb/trace2-comment-fix later to maint).\n   (merge c95ae3ff9c rs/describe-parseopt-fix later to maint).\n   (merge 36f76d2a25 rs/pack-objects-parseopt-fix later to maint).\n   (merge 30c8c55cbf jc/tree-walk-drop-base-offset later to maint).\n   (merge d089a06421 rs/bundle-parseopt-cleanup later to maint).\n   (merge 823839bda1 ew/sha256-gcrypt-leak-fixes later to maint).\n   (merge a5c01603b3 bc/ignore-clangd-cache later to maint).\n   (merge 12009a182b js/allow-t4000-to-be-indented-with-spaces later to maint).\n   (merge b3dcd24b8a jc/send-email-pre-process-fix later to maint).\n\n----------------------------------------------------------------\n\nChanges since v2.41.0 are as follows:\n\nAdam Majer (1):\n      doc: sha256 is no longer experimental\n\nAlejandro R. Sedeño (1):\n      statinfo.h: move DTYPE defines from dir.h\n\nAlex Henrie (4):\n      wt-status: don't show divergence advice when committing\n      remote: don't imply that integration is always required before pushing\n      push: don't imply that integration is always required before pushing\n      sequencer: finish parsing the todo list despite an invalid first line\n\nAndreas Herrmann (3):\n      configure.ac: don't overwrite NO_EXPAT option\n      configure.ac: don't overwrite NO_CURL option\n      configure.ac: always save NO_ICONV to config.status\n\nArkadii Yakovets (1):\n      l10n: uk: update translation (2.42.0)\n\nBagas Sanjaya (1):\n      l10n: po-id for 2.42 (round 1)\n\nBeat Bolli (2):\n      trace2: fix a comment\n      wrapper: use trace2 counters to collect fsync stats\n\nCalvin Wan (13):\n      strbuf: clarify API boundary\n      strbuf: clarify dependency\n      abspath: move related functions to abspath\n      credential-store: move related functions to credential-store file\n      object-name: move related functions to object-name\n      path: move related function to path\n      strbuf: remove global variable\n      git-compat-util: move strbuf.c funcs to its header\n      git-compat-util: move wrapper.c funcs to its header\n      sane-ctype.h: create header for sane-ctype macros\n      kwset: move translation table from ctype\n      treewide: remove unnecessary includes for wrapper.h\n      git-compat-util: move alloc macros to git-compat-util.h\n\nD. Ben Knoble (2):\n      i18n: mark more bundle.c strings for translation\n      t4002: fix \"diff can read from stdin\" syntax\n\nDerrick Stolee (7):\n      add: check color.ui for interactive add\n      add: test use of brackets when color is disabled\n      repository: create disable_replace_refs()\n      replace-objects: create wrapper around setting\n      repository: create read_replace_refs setting\n      packfile: delete .idx files before .pack files\n      builtin/repack.c: only repack `.pack`s that exist\n\nDimitriy Ryazantcev (1):\n      l10n: ru.po: update Russian translation\n\nElijah Newren (28):\n      init-db: document existing bug with core.bare in template config\n      init-db: remove unnecessary global variable\n      init-db, clone: change unnecessary global into passed parameter\n      setup: adopt shared init-db & clone code\n      read-cache: move shared commit and ls-files code\n      add: modify add_files_to_cache() to avoid globals\n      read-cache: move shared add/checkout/commit code\n      statinfo: move stat_{data,validity} functions from cache/read-cache\n      run-command.h: move declarations for run-command.c from cache.h\n      name-hash.h: move declarations for name-hash.c from cache.h\n      sparse-index.h: move declarations for sparse-index.c from cache.h\n      preload-index.h: move declarations for preload-index.c from elsewhere\n      diff.h: move declaration for global in diff.c from cache.h\n      merge.h: move declarations for merge.c from cache.h\n      repository.h: move declaration of the_index from cache.h\n      read-cache*.h: move declarations for read-cache.c functions from cache.h\n      cache.h: remove this no-longer-used header\n      log-tree: replace include of revision.h with simple forward declaration\n      repository: remove unnecessary include of path.h\n      diff.h: remove unnecessary include of oidset.h\n      list-objects-filter-options.h: remove unneccessary include\n      builtin.h: remove unneccessary includes\n      git-compat-util.h: remove unneccessary include of wildmatch.h\n      merge-ll: rename from ll-merge\n      khash: name the structs that khash declares\n      object-store-ll.h: split this header out of object-store.h\n      hash-ll, hashmap: move oidhash() to hash-ll\n      fsmonitor-ll.h: split this header out of fsmonitor.h\n\nEmir SARI (1):\n      l10n: tr: git 2.42.0\n\nEric Sunshine (1):\n      fsck: avoid misleading variable name\n\nEric Wong (5):\n      sha256/gcrypt: fix build with SANITIZE=leak\n      sha256/gcrypt: fix memory leak with SHA-256 repos\n      sha256/gcrypt: die on gcry_md_open failures\n      sha256: avoid functions deprecated in OpenSSL 3+\n      avoid SHA-1 functions deprecated in OpenSSL 3+\n\nGlen Choo (16):\n      cocci: add headings to and reword README\n      cocci: codify authoring and reviewing practices\n      setup.c: don't setup in discover_git_directory()\n      config: don't BUG when both kvi and source are set\n      config: inline git_color_default_config\n      urlmatch.h: use config_fn_t type\n      config: add ctx arg to config_fn_t\n      config.c: pass ctx in configsets\n      config: pass ctx with config files\n      config.c: pass ctx with CLI config\n      trace2: plumb config kvi\n      config: pass kvi to die_bad_number()\n      config.c: remove config_reader from configsets\n      config: add kvi.path, use it to evaluate includes\n      config: pass source to config_parser_event_fn_t\n      mailmap: change primary address for Glen Choo\n\nHan Young (1):\n      blame: allow --contents to work with bare repo\n\nJacob Abel (11):\n      worktree add: include -B in usage docs\n      t2400: cleanup created worktree in test\n      t2400: refactor \"worktree add\" opt exclusion tests\n      t2400: add tests to verify --quiet\n      worktree add: add --orphan flag\n      worktree add: introduce \"try --orphan\" hint\n      worktree add: extend DWIM to infer --orphan\n      worktree add: emit warn when there is a bad HEAD\n      t2400: drop no-op `--sq` from rev-parse call\n      builtin/worktree.c: convert tab in advice to space\n      t2400: rewrite regex to avoid unintentional PCRE\n\nJacob Keller (1):\n      fix cherry-pick/revert status when doing multiple commits\n\nJan Klötzke (1):\n      ref-filter: handle nested tags in --points-at option\n\nJean-Noël Avila (2):\n      l10n: fr v2.42.0 rnd 1\n      l10n: fr v2.42.0 rnd 2\n\nJeff King (41):\n      format-patch: free rev.message_id when exiting\n      format-patch: free elements of rev.ref_message_ids list\n      pathspec: factor out magic-to-name function\n      diff: factor out --follow pathspec check\n      diff: detect pathspec magic not supported by --follow\n      ci: use clang for ASan/UBSan checks\n      ci: run ASan/UBSan in a single job\n      ci: drop linux-clang job\n      commit: pass --no-divider to interpret-trailers\n      http: handle both \"h2\" and \"h2h3\" in curl info lines\n      var: mark unused parameters in git_var callbacks\n      imap-send: use server conf argument in setup_curl()\n      imap-send: drop unused parameter from imap_cmd_cb callback\n      imap-send: drop unused fields from imap_cmd_cb\n      refs.c: rename `ref_filter`\n      ref-filter.h: provide `REF_FILTER_INIT`\n      ref-filter: clear reachable list pointers after freeing\n      ref-filter: add `ref_filter_clear()`\n      ref-filter.c: parameterize match functions over patterns\n      test-ref-store: drop unimplemented reflog-expire command\n      do_for_each_ref_helper(): mark unused repository parameter\n      http: mark unused parameters in curl callbacks\n      http-push: mark unused parameter in xml callback\n      am: mark unused keep_cr parameters\n      count-objects: mark unused parameter in alternates callback\n      revisions: drop unused \"opt\" parameter in \"tweak\" callbacks\n      fsck: mark unused parameters in various fsck callbacks\n      merge-tree: mark unused parameter in traverse callback\n      replace: mark unused parameter in ref callback\n      replace: mark unused parameter in each_mergetag_fn callback\n      rev-parse: mark unused parameter in for_each_abbrev callback\n      tag: mark unused parameters in each_tag_name_fn callbacks\n      t/helper: mark unused callback void data parameters\n      ref-filter: avoid parsing tagged objects in match_points_at()\n      ref-filter: avoid parsing non-tags in match_points_at()\n      ref-filter: simplify return type of match_points_at\n      send-email: drop FakeTerm hack\n      send-email: avoid creating more than one Term::ReadLine object\n      repack: free geometry struct\n      t4053: avoid writing to unopened pipe\n      fsck: use enum object_type for fsck_walk callback\n\nJohan Ruokangas (1):\n      gitignore.txt: use backticks instead of double quotes\n\nJohannes Schindelin (6):\n      do_read_index(): always mark index as initialized unless erroring out\n      split-index: accept that a base index can be empty\n      commit -a -m: allow the top-level tree to become empty again\n      t0040: declare non-tab indentation to be okay in this script\n      win32: add a helper to run `git.exe` without a foreground window\n      git maintenance: avoid console window in scheduled tasks on Windows\n\nJohn Cai (34):\n      docs: clarify git-pack-refs --all will pack all refs\n      pack-refs: teach --exclude option to exclude refs from being packed\n      pack-refs: teach pack-refs --include option\n      t0000-basic: modernize test format\n      t0030-stripspace: modernize test format\n      t3210-pack-refs: modernize test format\n      t1001-read-tree-m-2way: modernize test format\n      t1002-read-tree-m-u-2way: modernize test format\n      t1006-cat-file: modernize test format\n      t3500-cherry: modernize test format\n      t3700-add: modernize test format\n      t3903-stash: modernize test format\n      t4002-diff-basic: modernize test format\n      t4003-diff-rename-1: modernize test format\n      t4004-diff-rename-symlink: modernize test format\n      t4202-log: modernize test format\n      t4206-log-follow-harder-copies: modernize test format\n      t5300-pack-object: modernize test format\n      t5301-sliding-window: modernize test format\n      t5303-pack-corruption-resilience: modernize test format\n      t5306-pack-nobase: modernize test format\n      t6050-replace: modernize test format\n      t7101-reset-empty-subdirs: modernize test format\n      t7110-reset-merge: modernize test format\n      t7111-reset-table: modernize test format\n      t7201-co: modernize test format\n      t7508-status: modernize test format\n      t7600-merge: modernize test format\n      t7700-repack: modernize test format\n      t9100-git-svn-basic: modernize test format\n      t9104-git-svn-follow-parent: modernize test format\n      t9200-git-cvsexportcommit: modernize test format\n      t9400-git-cvsserver-server: modernize test format\n      docs: add git hash-object -t option's possible values\n\nJonathan Tan (1):\n      CodingGuidelines: use octal escapes, not hex\n\nJordi Mas (1):\n      l10n: Update Catalan translation\n\nJosip Sokcevic (1):\n      diff-lib: honor override_submodule_config flag bit\n\nJunio C Hamano (48):\n      diff: fix interaction between the \"-s\" option and other options\n      show-branch doc: say <ref>, not <reference>\n      Start the 2.42 cycle\n      The second batch for 2.42\n      The third batch\n      ll-merge: killing the external merge driver aborts the merge\n      The fourth batch\n      t6406: skip \"external merge driver getting killed by a signal\" test on Windows\n      The fifth batch\n      The sixth batch\n      The seventh batch\n      The eighth batch\n      t6135: attr magic with path pattern\n      tree-walk: lose base_offset that is never used in tree_entry_interesting\n      tree-walk: drop unused base_offset from do_match()\n      The ninth batch\n      dir: match \"attr\" pathspec magic with correct paths\n      The tenth batch\n      The eleventh batch\n      The twelfth batch\n      gitignore.txt: mark up explanation of patterns consistently\n      am: simplify parsing of \"--[no-]keep-cr\"\n      branch: reject \"--no-all\" and \"--no-remotes\" early\n      parse-options: introduce OPT_IPVERSION()\n      fetch: reject --no-ipv[46]\n      show-branch: --no-sparse should give dense output\n      short help: allow multi-line opthelp\n      remote: simplify \"remote add --tags\" help text\n      short help: allow a gap smaller than USAGE_GAP\n      show-branch: reject --[no-](topo|date)-order\n      reset: reject --no-(mixed|soft|hard|merge|keep) option\n      The thirteenth batch\n      branch: update the message to refuse touching a branch in-use\n      hex: retire get_sha1_hex()\n      The fourteenth batch\n      SubmittingPatches: choice of base for fixing an older maintenance track\n      The fifteenth batch\n      SubmittingPatches: explain why 'next' and above are inappropriate base\n      SubmittingPatches: use of older maintenance tracks is an exception\n      The sixteenth batch\n      MyFirstContribution: refrain from self-iterating too much\n      The seventeenth batch\n      The eighteenth batch\n      Git 2.42-rc0\n      A few more topics before -rc1\n      Git 2.42-rc1\n      Git 2.42-rc2\n      Git 2.42\n\nKousik Sanagavarapu (5):\n      t/lib-gpg: introduce new prereq GPG2\n      ref-filter: add new \"signature\" atom\n      t4205: correctly test %(describe:abbrev=...)\n      ref-filter: add multiple-option parsing functions\n      ref-filter: add new \"describe\" atom\n\nKristoffer Haugsbakk (5):\n      doc: tag: document `TAG_EDITMSG`\n      t/t7004-tag: add regression test for successful tag creation\n      tag: keep the message file in case ref transaction fails\n      notes: update documentation for `use_default_notes`\n      notes: move the documentation to the struct\n\nLinus Arver (15):\n      docs: typofixes\n      doc: trailer: fix grammar\n      doc: trailer: swap verb order\n      doc: trailer: drop \"commit message part\" phrasing\n      doc: trailer: examples: avoid the word \"message\" by itself\n      doc: trailer: remove redundant phrasing\n      doc: trailer: use angle brackets for <token> and <value>\n      doc: trailer.<token>.command: emphasize deprecation\n      doc: trailer: mention 'key' in DESCRIPTION\n      doc: trailer: add more examples in DESCRIPTION\n      SubmittingPatches: reword awkward phrasing\n      SubmittingPatches: discuss subsystems separately from git.git\n      SubmittingPatches: de-emphasize branches as starting points\n      SubmittingPatches: emphasize need to communicate non-default starting points\n      SubmittingPatches: simplify guidance for choosing a starting point\n\nM Hickford (3):\n      credential: avoid erasing distinct password\n      credential: erase all matching credentials\n      doc: gitcredentials: link to helper list\n\nMartin Ågren (5):\n      t0091-bugreport.sh: actually verify some content of report\n      notes doc: split up run-on sentences\n      notes doc: tidy up `--no-stripspace` paragraph\n      show-ref doc: fix carets in monospace\n      rev-list-options: fix typo in `--stdin` documentation\n\nMatthias Aßhauer (3):\n      run-command: conditionally define locate_in_PATH()\n      compat/mingw: implement a native locate_in_PATH()\n      docs: update when `git bisect visualize` uses `gitk`\n\nMike Hommey (2):\n      commit-reach: fix memory leak in get_reachable_subset()\n      mingw: use lowercase includes for some Windows headers\n\nOswald Buddenhagen (2):\n      advice: handle \"rebase\" in error_resolve_conflict()\n      t9001: remove excessive GIT_SEND_EMAIL_NOTTY=1\n\nPatrick Steinhardt (17):\n      fetch: drop unused DISPLAY_FORMAT_UNKNOWN enum value\n      fetch: drop unneeded NULL-check for `remote_ref`\n      fetch: pass through `fetch_config` directly\n      fetch: use `fetch_config` to store \"fetch.prune\" value\n      fetch: use `fetch_config` to store \"fetch.pruneTags\" value\n      fetch: use `fetch_config` to store \"fetch.showForcedUpdates\" value\n      fetch: use `fetch_config` to store \"fetch.recurseSubmodules\" value\n      fetch: use `fetch_config` to store \"fetch.parallel\" value\n      fetch: use `fetch_config` to store \"submodule.fetchJobs\" value\n      t1006: don't strip timestamps from expected results\n      t1006: modernize test style to use `test_cmp`\n      strbuf: provide CRLF-aware helper to read until a specified delimiter\n      cat-file: simplify reading from standard input\n      cat-file: add option '-Z' that delimits input and output with NUL\n      revision: reorder `read_revisions_from_stdin()`\n      revision: small readability improvement for reading from stdin\n      revision: handle pseudo-opts in `--stdin` mode\n\nPetar Vutov (1):\n      doc: highlight that .gitmodules does not support !command\n\nPeter Krefting (1):\n      l10n: sv.po: Update Swedish translation 5549t0f0u\n\nPhilippe Blain (30):\n      revisions.txt: use description list for special refs\n      revisions.txt: document more special refs\n      completion: complete REVERT_HEAD and BISECT_HEAD\n      git-merge.txt: modernize word choice in \"True merge\" section\n      Documentation: document AUTO_MERGE\n      completion: complete AUTO_MERGE\n      completion: add comments describing __git_diff_* globals\n      completion: complete --break-rewrites\n      completion: complete --cc\n      completion: complete --combined-all-paths\n      completion: complete --compact-summary\n      completion: complete --default-prefix\n      completion: complete --find-copies\n      completion: complete --find-object\n      completion: complete --find-renames\n      completion: complete --function-context\n      completion: complete --ignore-matching-lines\n      completion: complete --irreversible-delete\n      completion: complete --ita-invisible-in-index and --ita-visible-in-index\n      completion: complete --line-prefix\n      completion: complete --no-relative\n      completion: complete --no-stat\n      completion: complete --output\n      completion: complete --output-indicator-{context,new,old}\n      completion: complete --unified\n      completion: complete --ws-error-highlight\n      completion: move --pickaxe-{all,regex} to __git_diff_common_options\n      completion: complete --diff-merges, its options and --no-diff-merges\n      completion: complete --remerge-diff\n      diff.c: mention completion above add_diff_options\n\nPhillip Wood (7):\n      apply: improve error messages when reading patch\n      diff --no-index: refuse to compare stdin to a directory\n      diff --no-index: die on error reading stdin\n      t4054: test diff --no-index with stdin\n      diff --no-index: support reading from named pipes\n      rebase --skip: fix commit message clean up when skipping squash\n      t4053: avoid race when killing background processes\n\nRalf Thielow (1):\n      l10n: Update German translation\n\nRené Scharfe (20):\n      t1800: loosen matching of error message for bad shebang\n      run-command: report exec error even on ENOENT\n      ls-tree: fix documentation of %x format placeholder\n      pretty: factor out expand_separator()\n      strbuf: factor out strbuf_expand_step()\n      replace strbuf_expand_dict_cb() with strbuf_expand_step()\n      replace strbuf_expand() with strbuf_expand_step()\n      strbuf: simplify strbuf_expand_literal_cb()\n      ls-tree: simplify prefix handling\n      pretty: avoid double negative in format_commit_item()\n      pkt-line: add size parameter to packet_length()\n      pretty: use strchr(3) in userformat_find_requirements()\n      t6300: fix setup with GPGSSH but without GPG\n      strbuf: use skip_prefix() in strbuf_addftime()\n      ls-tree: fix --no-full-name\n      describe: fix --no-exact-match\n      pack-objects: fix --no-keep-true-parents\n      pack-objects: fix --no-quiet\n      bundle: use OPT_PASSTHRU_ARGV\n      parse-options: disallow negating OPTION_SET_INT 0\n\nRubén Justo (11):\n      config: fix a leak in git_config_copy_or_rename_section_in_file\n      remote: fix a leak in query_matches_negative_refspec\n      branch: fix a leak in dwim_and_setup_tracking\n      branch: fix a leak in inherit_tracking\n      branch: fix a leak in check_tracking_branch\n      branch: fix a leak in setup_tracking\n      rev-parse: fix a leak with --abbrev-ref\n      branch: fix a leak in setup_tracking\n      branch: fix a leak in cmd_branch\n      config: fix a leak in git_config_copy_or_rename_section_in_file\n      tests: mark as passing with SANITIZE=leak\n\nSean Allred (5):\n      show-ref doc: update for internal consistency\n      ls-remote doc: remove redundant --tags example\n      ls-remote doc: show peeled tags in examples\n      ls-remote doc: explain what each example does\n      ls-remote doc: document the output format\n\nSebastian Thiel (1):\n      mv: handle lstat() failure correctly\n\nShuqi Liang (2):\n      diff-tree: integrate with sparse index\n      worktree: integrate with sparse-index\n\nTaylor Blau (53):\n      object: add object_array initializer helper function\n      pack-bitmap.c: extract `fill_in_bitmap()`\n      pack-bitmap.c: use commit boundary during bitmap traversal\n      builtin/submodule--helper.c: handle missing submodule URLs\n      builtin/repack.c: only collect fully-formed packs\n      reachable.c: extract `obj_is_recent()`\n      gc: introduce `gc.recentObjectsHook`\n      pack-bitmap.c: gracefully degrade on failure to load MIDX'd pack\n      t7701: make annotated tag unreachable\n      fsck: suppress commit-graph output with `--no-progress`\n      fsck: suppress MIDX output with `--no-progress`\n      commit-graph.c: extract `verify_one_commit_graph()`\n      commit-graph.c: iteratively verify commit-graph chains\n      commit-graph.c: pass progress to `verify_one_commit_graph()`\n      commit-graph.c: avoid duplicated progress output during `verify`\n      builtin/for-each-ref.c: add `--exclude` option\n      refs: plumb `exclude_patterns` argument throughout\n      refs/packed-backend.c: refactor `find_reference_location()`\n      refs/packed-backend.c: implement jump lists to avoid excluded pattern(s)\n      refs/packed-backend.c: add trace2 counters for jump list\n      revision.h: store hidden refs in a `strvec`\n      refs.h: let `for_each_namespaced_ref()` take excluded patterns\n      refs.h: implement `hidden_refs_to_excludes()`\n      builtin/receive-pack.c: avoid enumerating hidden references\n      upload-pack.c: avoid enumerating hidden refs where possible\n      ls-refs.c: avoid enumerating hidden refs where possible\n      builtin/repack.c: avoid dir traversal in `collect_pack_filenames()`\n      packfile.c: prevent overflow in `nth_packed_object_id()`\n      packfile.c: prevent overflow in `load_idx()`\n      packfile.c: use checked arithmetic in `nth_packed_object_offset()`\n      midx.c: use `size_t`'s for fanout nr and alloc\n      midx.c: prevent overflow in `nth_midxed_object_oid()`\n      midx.c: prevent overflow in `nth_midxed_offset()`\n      midx.c: store `nr`, `alloc` variables as `size_t`'s\n      midx.c: prevent overflow in `write_midx_internal()`\n      midx.c: prevent overflow in `fill_included_packs_batch()`\n      pack-bitmap.c: ensure that eindex lookups don't overflow\n      commit-graph.c: prevent overflow in `write_commit_graph_file()`\n      commit-graph.c: prevent overflow in add_graph_to_chain()\n      commit-graph.c: prevent overflow in `load_oid_from_graph()`\n      commit-graph.c: prevent overflow in `fill_commit_graph_info()`\n      commit-graph.c: prevent overflow in `fill_commit_in_graph()`\n      commit-graph.c: prevent overflow in `load_tree_for_commit()`\n      commit-graph.c: prevent overflow in `split_graph_merge_strategy()`\n      commit-graph.c: prevent overflow in `merge_commit_graph()`\n      commit-graph.c: prevent overflow in `write_commit_graph()`\n      commit-graph.c: prevent overflow in `verify_commit_graph()`\n      t/lib-commit-graph.sh: allow `graph_read_expect()` in sub-directories\n      t/lib-commit-graph.sh: avoid directory change in `graph_git_behavior()`\n      t5318: avoid top-level directory changes\n      t5328: avoid top-level directory changes\n      t/lib-commit-graph.sh: avoid sub-shell in `graph_git_behavior()`\n      Documentation/RelNotes/2.42.0.txt: typofix\n\nTeng Long (10):\n      surround %s with quotes when failed to lookup commit\n      notes.c: cleanup 'strbuf_grow' call in 'append_edit'\n      notes.c: use designated initializers for clarity\n      t3321: add test cases about the notes stripspace behavior\n      notes.c: introduce '--separator=<paragraph-break>' option\n      notes.c: append separator instead of insert by pos\n      notes.c: introduce \"--[no-]stripspace\" option\n      notes: introduce \"--no-separator\" option\n      l10n: zh_CN: v2.42.0 round 1\n      l10n: zh_CN: 2.42.0 round 2\n\nTodd Zullinger (3):\n      trace2 tests: fix PTHREADS prereq\n      t/lib-gpg: fix ssh-keygen -Y check-novalidate with openssh-9.0\n      t/lib-gpg: require GPGSSH for GPGSSH_VERIFYTIME prereq\n\nVictoria Dye (3):\n      config: use gitdir to get worktree config\n      config: pass 'repo' directly to 'config_with_options()'\n      repository: move 'repository_format_worktree_config' to repo scope\n\nVinayak Dev (1):\n      docs: add necessary headers to Documentation/MFOW.txt\n\nYi-Jyun Pan (1):\n      l10n: zh_TW.po: Git 2.42\n\nZheNing Hu (1):\n      ls-files: align format atoms with ls-tree\n\nbrian m. carlson (9):\n      t: add a function to check executable bit\n      var: add support for listing the shell\n      var: format variable structure with C99 initializers\n      var: adjust memory allocation for strings\n      attr: expose and rename accessor functions\n      var: add attributes files locations\n      var: add config file locations\n      ident: don't consider '.' a crud\n      gitignore: ignore clangd .cache directory\n\n"}]}