{"thread":{"id":"58549","subject":"[ANNOUNCE] Git v2.38.0","startedAt":"2022-10-03T17:27:10Z","lastAt":"2022-10-05T19:22:36Z","messageCount":3,"participants":["Junio C Hamano","Thomas Braun"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"464090","messageId":"xmqqmtacu8bw.fsf@gitster.g","threadId":"58549","inReplyTo":null,"subject":"[ANNOUNCE] Git v2.38.0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2022-10-03T17:26:43Z","receivedAt":"2022-10-03T17:27:10Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"The latest feature release Git v2.38.0 is now available at the\nusual places.  It is comprised of 699 non-merge commits since\nv2.37.0, contributed by 92 people, 24 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.38.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.37.0 are as follows.\nWelcome to the Git development community!\n\n  Andrew Olsen, Anthony Delannoy, Carlos López, Celeste Liu,\n  Cleber Rosa, David Plumpton, Elijah Conners, Eric DeCosta,\n  Goss Geppert, Hubert Bossot, Ilya K, Ingy dot Net, Jacob Stopak,\n  Julien Rouhaud, Kilian Kilger, Lana Deere, Manuel Boni, Matthew\n  Klein, Miaoqian Lin, Moritz Baumann, Pavel Rappo, Pierre Garnier,\n  Richard Oliver, and Xavier Morel.\n\nReturning contributors who helped this release are as follows.\nThanks for your continued support.\n\n  Abhradeep Chakraborty, Adam Dinwoodie, Ævar Arnfjörð\n  Bjarmason, Alexander Shopov, Alex Henrie, Arthur Milchior,\n  Bagas Sanjaya, brian m. carlson, Calvin Wan, Carlo Marcelo\n  Arenas Belón, Christian Couder, Christoph Reiter, Derrick\n  Stolee, Dimitriy Ryazantcev, Đoàn Trần Công Danh, Elijah\n  Newren, Emily Shaffer, Emir SARI, Eric Sunshine, Fangyi\n  Zhou, Felipe Contreras, Fernando Ramos, Glen Choo, Han Xin,\n  Hariom Verma, Jacob Keller, Jaydeep Das, Jean-Noël Avila,\n  Jeff King, Jiang Xin, Joey Hess, Johannes Schindelin, John\n  Cai, Jonathan Tan, Jordi Mas, Josh Steadmon, Junio C Hamano,\n  Justin Donnelly, Kyle Zhao, Lessley Dennington, Li Linchao,\n  Linus Torvalds, Martin Ågren, Matheus Tavares, Matthew John\n  Cheetham, Michael J Gruber, Øystein Walle, Peter Krefting,\n  Philip Oakley, Philippe Blain, Phillip Szelat, Phillip Wood,\n  Ralf Thielow, Randall S. Becker, Renato Botelho, René Scharfe,\n  Shaoxuan Yuan, Siddharth Asthana, SZEDER Gábor, Tao Klerks,\n  Taylor Blau, Teng Long, Todd Zullinger, Torsten Bögershausen,\n  Victoria Dye, Yi-Jyun Pan, ZheNing Hu, and 依云.\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.38 Release Notes\n=======================\n\nUI, Workflows & Features\n\n * \"git remote show [-n] frotz\" now pays attention to negative\n   pathspec.\n\n * \"git push\" sometimes performs poorly when reachability bitmaps are\n   used, even in a repository where other operations are helped by\n   bitmaps.  The push.useBitmaps configuration variable is introduced\n   to allow disabling use of reachability bitmaps only for \"git push\".\n\n * \"git grep -m<max-hits>\" is a way to limit the hits shown per file.\n\n * \"git merge-tree\" learned a new mode where it takes two commits and\n   computes a tree that would result in the merge commit, if the\n   histories leading to these two commits were to be merged.\n\n * \"git mv A B\" in a sparsely populated working tree can be asked to\n   move a path between directories that are \"in cone\" (i.e. expected\n   to be materialized in the working tree) and \"out of cone\"\n   (i.e. expected to be hidden).  The handling of such cases has been\n   improved.\n\n * Earlier, HTTP transport clients learned to tell the server side\n   what locale they are in by sending Accept-Language HTTP header, but\n   this was done only for some requests but not others.\n\n * Introduce a safe.barerepository configuration variable that\n   allows users to forbid discovery of bare repositories.\n\n * Various messages that come from the pack-bitmap codepaths have been\n   tweaked.\n\n * \"git rebase -i\" learns to update branches whose tip appear in the\n   rebased range with \"--update-refs\" option.\n\n * \"git ls-files\" learns the \"--format\" option to tweak its output.\n\n * \"git cat-file\" learned an option to use the mailmap when showing\n   commit and tag objects.\n\n * When \"git merge\" finds that it cannot perform a merge, it should\n   restore the working tree to the state before the command was\n   initiated, but in some corner cases it didn't.\n\n * Operating modes like \"--batch\" of \"git cat-file\" command learned to\n   take NUL-terminated input, instead of one-item-per-line.\n\n * \"git rm\" has become more aware of the sparse-index feature.\n\n * \"git rev-list --disk-usage\" learned to take an optional value\n   \"human\" to show the reported value in human-readable format, like\n   \"3.40MiB\".\n\n * The \"diagnose\" feature to create a zip archive for diagnostic\n   material has been lifted from \"scalar\" and made into a feature of\n   \"git bugreport\".\n\n * The namespaces used by \"log --decorate\" from \"refs/\" hierarchy by\n   default has been tightened.\n\n * \"git rev-list --ancestry-path=C A..B\" is a natural extension of\n   \"git rev-list A..B\"; instead of choosing a subset of A..B to those\n   that have ancestry relationship with A, it lets a subset with\n   ancestry relationship with C.\n\n * \"scalar\" now enables built-in fsmonitor on enlisted repositories,\n   when able.\n\n * The bash prompt (in contrib/) learned to optionally indicate when\n   the index is unmerged.\n\n * \"git clone\" command learned the \"--bundle-uri\" option to coordinate\n   with hosting sites the use of pre-prepared bundle files.\n\n * \"git range-diff\" learned to honor pathspec argument if given.\n\n * \"git format-patch --from=<ident>\" can be told to add an in-body\n   \"From:\" line even for commits that are authored by the given\n   <ident> with \"--force-in-body-from\" option.\n\n * The built-in fsmonitor refuses to work on a network mounted\n   repositories; a configuration knob for users to override this has\n   been introduced.\n\n * The \"scalar\" addition from Microsoft is now part of the core Git\n   installation.\n\n\nPerformance, Internal Implementation, Development Support etc.\n\n * Collection of what is referenced by objects in promisor packs have\n   been optimized to inspect these objects in the in-pack order.\n\n * Introduce a helper to see if a branch is already being worked on\n   (hence should not be newly checked out in a working tree), which\n   performs much better than the existing find_shared_symref() to\n   replace many uses of the latter.\n\n * Teach \"git archive\" to (optionally and then by default) avoid\n   spawning an external \"gzip\" process when creating \".tar.gz\" (and\n   \".tgz\") archives.\n\n * Allow large objects read from a packstream to be streamed into a\n   loose object file straight, without having to keep it in-core as a\n   whole.\n\n * Further preparation to turn git-submodule.sh into a builtin\n   continues.\n\n * Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp\n   macro, which would improve maintainability and readability.\n\n * Teach \"make all\" to build gitweb as well.\n\n * Tweak tests so that they still work when the \"git init\" template\n   did not create .git/info directory.\n\n * Add Coccinelle rules to detect the pattern of initializing and then\n   finalizing a structure without using it in between at all, which\n   happens after code restructuring and the compilers fail to\n   recognize as an unused variable.\n\n * The code to convert between GPG trust level strings and internal\n   constants we use to represent them have been cleaned up.\n\n * Support for libnettle as SHA256 implementation has been added.\n\n * The way \"git multi-pack\" uses parse-options API has been improved.\n\n * A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY\n   macro has been improved.\n\n * API tweak to make it easier to run fuzz testing on commit-graph parser.\n\n * Omit fsync-related trace2 entries when their values are all zero.\n\n * The codepath to write multi-pack index has been taught to release a\n   large chunk of memory that holds an array of objects in the packs,\n   as soon as it is done with the array, to reduce memory consumption.\n\n * Add a level of redirection to array allocation API in xdiff part,\n   to make it easier to share with the libgit2 project.\n\n * \"git fetch\" client logs the partial clone filter used in the trace2\n   output.\n\n * The \"bundle URI\" design gets documented.\n\n * The common ancestor negotiation exchange during a \"git fetch\"\n   session now leaves trace log.\n\n * Test portability improvements.\n   (merge 4d1d843be7 mt/rot13-in-c later to maint).\n\n * The \"subcommand\" mode is introduced to parse-options API and update\n   the command line parser of Git commands with subcommands.\n\n * The pack bitmap file gained a bitmap-lookup table to speed up\n   locating the necessary bitmap for a given commit.\n\n * The assembly version of SHA-1 implementation for PPC has been\n   removed.\n\n * The server side that responds to \"git fetch\" and \"git clone\"\n   request has been optimized by allowing it to send objects in its\n   object store without recomputing and validating the object names.\n\n * Annotate function parameters that are not used (but cannot be\n   removed for structural reasons), to prepare us to later compile\n   with -Wunused warning turned on.\n\n * Share the text used to explain configuration variables used by \"git\n   <subcmd>\" in \"git help <subcmd>\" with the text from \"git help config\".\n\n * \"git mv A B\" in a sparsely populated working tree can be asked to\n   move a path from a directory that is \"in cone\" to another directory\n   that is \"out of cone\".  Handling of such a case has been improved.\n\n * The chainlint script for our tests has been revamped.\n\n\nFixes since v2.37\n-----------------\n\n * Rewrite of \"git add -i\" in C that appeared in Git 2.25 didn't\n   correctly record a removed file to the index, which was fixed.\n\n * Certain diff options are currently ignored when combined-diff is\n   shown; mark them as incompatible with the feature.\n\n * Adjust technical/bitmap-format to be formatted by AsciiDoc, and\n   add some missing information to the documentation.\n\n * Fixes for tests when the source directory has unusual characters in\n   its path, e.g. whitespaces, double-quotes, etc.\n\n * \"git mktree --missing\" lazily fetched objects that are missing from\n   the local object store, which was totally unnecessary for the purpose\n   of creating the tree object(s) from its input.\n\n * Give _() markings to fatal/warning/usage: labels that are shown in\n   front of these messages.\n\n * References to commands-to-be-typed-literally in \"git rebase\"\n   documentation mark-up have been corrected.\n\n * In a non-bare repository, the behavior of Git when the\n   core.worktree configuration variable points at a directory that has\n   a repository as its subdirectory, regressed in Git 2.27 days.\n\n * Recent update to vimdiff layout code has been made more robust\n   against different end-user vim settings.\n\n * Plug various memory leaks, both in the main code and in test-tool\n   commands.\n\n * Fixes a long-standing corner case bug around directory renames in\n   the merge-ort strategy.\n\n * The resolve-undo information in the index was not protected against\n   GC, which has been corrected.\n\n * A corner case bug where lazily fetching objects from a promisor\n   remote resulted in infinite recursion has been corrected.\n\n * \"git clone\" from a repository with some ref whose HEAD is unborn\n   did not set the HEAD in the resulting repository correctly, which\n   has been corrected.\n\n * An earlier attempt to plug leaks placed a clean-up label to jump to\n   at a bogus place, which as been corrected.\n\n * Variable quoting fix in the vimdiff driver of \"git mergetool\"\n\n * \"git shortlog -n\" relied on the underlying qsort() to be stable,\n   which shouldn't have.  Fixed.\n\n * A fix for a regression in test framework.\n\n * mkstemp() emulation on Windows has been improved.\n\n * Add missing documentation for \"include\" and \"includeIf\" features in\n   \"git config\" file format, which incidentally teaches the command\n   line completion to include them in its offerings.\n\n * Avoid \"white/black-list\" in documentation and code comments.\n\n * Workaround for a compiler warning against use of die() in\n   osx-keychain (in contrib/).\n\n * Workaround for a false positive compiler warning.\n\n * \"git p4\" working on UTF-16 files on Windows did not implement\n   CRLF-to-LF conversion correctly, which has been corrected.\n\n * \"git p4\" did not handle non-ASCII client name well, which has been\n   corrected.\n\n * \"rerere-train\" script (in contrib/) used to honor commit.gpgSign\n   while recreating the throw-away merges.\n\n * \"git checkout\" miscounted the paths it updated, which has been\n   corrected.\n\n * Fix for a bug that makes write-tree to fail to write out a\n   non-existent index as a tree, introduced in 2.37.\n\n * There was a bug in the codepath to upgrade generation information\n   in commit-graph from v1 to v2 format, which has been corrected.\n\n * Gitweb had legacy URL shortener that is specific to the way\n   projects hosted on kernel.org used to (but no longer) work, which\n   has been removed.\n\n * Fix build procedure for Windows that uses CMake so that it can pick\n   up the shell interpreter from local installation location.\n\n * Conditionally allow building Python interpreter on Windows\n\n * Fix to lstat() emulation on Windows.\n\n * Older gcc with -Wall complains about the universal zero initializer\n   \"struct s = { 0 };\" idiom, which makes developers' lives\n   inconvenient (as -Werror is enabled by DEVELOPER=YesPlease).  The\n   build procedure has been tweaked to help these compilers.\n\n * Plug memory leaks in the failure code path in the \"merge-ort\" merge\n   strategy backend.\n\n * \"git symbolic-ref symref non..sen..se\" is now diagnosed as an error.\n\n * A follow-up fix to a fix for a regression in 2.36 around hooks.\n\n * Avoid repeatedly running getconf to ask libc version in the test\n   suite, and instead just as it once per script.\n\n * Platform-specific code that determines if a directory is OK to use\n   as a repository has been taught to report more details, especially\n   on Windows.\n\n * \"vimdiff3\" regression fix.\n\n * \"git fsck\" reads mode from tree objects but canonicalizes the mode\n   before passing it to the logic to check object sanity, which has\n   hid broken tree objects from the checking logic.  This has been\n   corrected, but to help existing projects with broken tree objects\n   that they cannot fix retroactively, the severity of anomalies this\n   code detects has been demoted to \"info\" for now.\n\n * Fixes to sparse index compatibility work for \"reset\" and \"checkout\"\n   commands.\n\n * An earlier optimization discarded a tree-object buffer that is\n   still in use, which has been corrected.\n\n * Fix deadlocks between main Git process and subprocess spawned via\n   the pipe_command() API, that can kill \"git add -p\" that was\n   reimplemented in C recently.\n\n * The sequencer machinery translated messages left in the reflog by\n   mistake, which has been corrected.\n\n * xcalloc(), imitating calloc(), takes \"number of elements of the\n   array\", and \"size of a single element\", in this order.  A call that\n   does not follow this ordering has been corrected.\n\n * The preload-index codepath made copies of pathspec to give to\n   multiple threads, which were left leaked.\n\n * Update the version of Ubuntu used for GitHub Actions CI from 18.04\n   to 22.04.\n\n * The auto-stashed local changes created by \"git merge --autostash\"\n   was mixed into a conflicted state left in the working tree, which\n   has been corrected.\n\n * Multi-pack index got corrupted when preferred pack changed from one\n   pack to another in a certain way, which has been corrected.\n   (merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).\n\n * The clean-up of temporary files created via mks_tempfile_dt() was\n   racy and attempted to unlink() the leading directory when signals\n   are involved, which has been corrected.\n   (merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).\n\n * FreeBSD portability fix for \"git maintenance\" that spawns \"crontab\"\n   to schedule tasks.\n   (merge ee69e7884e bc/gc-crontab-fix later to maint).\n\n * Those who use diff-so-fancy as the diff-filter noticed a regression\n   or two in the code that parses the diff output in the built-in\n   version of \"add -p\", which has been corrected.\n   (merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).\n\n * Segfault fix-up to an earlier fix to the topic to teach \"git reset\"\n   and \"git checkout\" work better in a sparse checkout.\n   (merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).\n\n * \"git diff --no-index A B\" managed its the pathnames of its two\n   input files rather haphazardly, sometimes leaking them.  The\n   command line argument processing has been straightened out to clean\n   it up.\n   (merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).\n\n * \"git rev-list --verify-objects\" ought to inspect the contents of\n   objects and notice corrupted ones, but it didn't when the commit\n   graph is in use, which has been corrected.\n   (merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).\n\n * More fixes to \"add -p\"\n   (merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).\n\n * The parser in the script interface to parse-options in \"git\n   rev-parse\" has been updated to diagnose a bogus input correctly.\n   (merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).\n\n * The code that manages list-object-filter structure, used in partial\n   clones, leaked the instances, which has been plugged.\n   (merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).\n\n * Fix another UI regression in the reimplemented \"add -p\".\n   (merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).\n\n * \"git fetch\" over protocol v2 sent an incorrect ref prefix request\n   to the server and made \"git pull\" with configured fetch refspec\n   that does not cover the remote branch to merge with fail, which has\n   been corrected.\n   (merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).\n\n * A result from opendir() was leaking in the commit-graph expiration\n   codepath, which has been plugged.\n   (merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint).\n\n * Just like we have coding guidelines, we now have guidelines for\n   reviewers.\n   (merge e01b851923 vd/doc-reviewing-guidelines later to maint).\n\n * Other code cleanup, docfix, build fix, etc.\n   (merge 77b9e85c0f vd/fix-perf-tests later to maint).\n   (merge 0682bc43f5 jk/test-crontab-fixes later to maint).\n   (merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).\n\n----------------------------------------------------------------\n\nChanges since v2.37.0 are as follows:\n\nAbhradeep Chakraborty (9):\n      bitmap-format.txt: feed the file to asciidoc to generate html\n      bitmap-format.txt: fix some formatting issues\n      bitmap-format.txt: add information for trailing checksum\n      Documentation/technical: describe bitmap lookup table extension\n      bitmap: move `get commit positions` code to `bitmap_writer_finish`\n      pack-bitmap-write.c: write lookup table extension\n      pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests\n      pack-bitmap: prepare to read lookup table extension\n      bitmap-lookup-table: add performance tests for lookup table\n\nAdam Dinwoodie (1):\n      t1800: correct test to handle Cygwin\n\nAlex Henrie (5):\n      gc: don't translate literal commands\n      builtin/diagnose.c: don't translate the two mode values\n      pack-bitmap: improve grammar of \"xor chain\" error message\n      l10n: fr: don't say that merge is \"the default strategy\"\n      l10n: es: update translation\n\nAlexander Shopov (3):\n      l10n: bg.po: Updated Bulgarian translation (5482t)\n      l10n: bg.po: Updated Bulgarian translation (5484t)\n      l10n: bg.po: Updated Bulgarian translation (5484t)\n\nAnthony Delannoy (1):\n      preload-index: fix memleak\n\nBagas Sanjaya (3):\n      l10n: po-id for 2.38 (round 1)\n      l10n: po-id for 2.38 (round 2)\n      l10n: po-id for 2.38 (round 3)\n\nCalvin Wan (1):\n      submodule merge: update conflict error message\n\nCarlo Marcelo Arenas Belón (2):\n      setup: tighten ownership checks post CVE-2022-24765\n      cmake: support local installations of git\n\nCarlos López (1):\n      grep: add --max-count command line option\n\nCeleste Liu (1):\n      contrib/rerere-train: avoid useless gpg sign in training\n\nChristian Couder (1):\n      Documentation: clarify whitespace rules for trailers\n\nCleber Rosa (1):\n      setup: fix function name in a BUG() message\n\nDerrick Stolee (51):\n      branch: add branch_checked_out() helper\n      branch: check for bisects and rebases\n      fetch: use new branch_checked_out() and add tests\n      branch: use branch_checked_out() when deleting refs\n      branch: fix branch_checked_out() leaks\n      t5510: replace 'origin' with URL more carefully\n      vscode: improve tab size and wrapping\n      git-rebase.txt: use back-ticks consistently\n      pack-bitmap-write: use const for hashes\n      midx: extract bitmap write setup\n      midx: reduce memory pressure while writing bitmaps\n      daemon: clarify directory arguments\n      git-cvsserver: clarify directory list\n      git.txt: remove redundant language\n      t: avoid \"whitelist\"\n      transport.c: avoid \"whitelist\"\n      t2407: test bisect and rebase as black-boxes\n      t2407: test branches currently using apply backend\n      branch: consider refs under 'update-refs'\n      rebase-interactive: update 'merge' description\n      sequencer: define array with enum values\n      sequencer: add update-ref command\n      rebase: add --update-refs option\n      rebase: update refs from 'update-ref' commands\n      sequencer: rewrite update-refs as user edits todo list\n      rebase: add rebase.updateRefs config option\n      sequencer: ignore HEAD ref under --update-refs\n      sequencer: notify user of --update-refs activity\n      compat/win32: correct for incorrect compiler warning\n      refs: allow \"HEAD\" as decoration filter\n      t4207: modernize test\n      t4207: test coloring of grafted decorations\n      refs: add array of ref namespaces\n      refs: use ref_namespaces for replace refs base\n      log-tree: use ref_namespaces instead of if/else-if\n      log: add default decoration filter\n      log: add --clear-decorations option\n      log: create log.initialDecorationSet=all\n      maintenance: stop writing log.excludeDecoration\n      fetch: use ref_namespaces during prefetch\n      docs: document bundle URI standard\n      bundle-uri: add example bundle organization\n      remote-curl: add 'get' capability\n      bundle-uri: create basic file-copy logic\n      clone: add --bundle-uri option\n      bundle-uri: add support for http(s):// and file://\n      clone: --bundle-uri cannot be combined with --depth\n      t6019: modernize tests with helper\n      clone: warn on failure to repo_init()\n      ci: update 'static-analysis' to Ubuntu 22.04\n      pack-bitmap: remove trace2 region from hot path\n\nDimitriy Ryazantcev (1):\n      i18n: mark message helpers prefix for translation\n\nElijah Conners (1):\n      reftable: use a pointer for pq_entry param\n\nElijah Newren (43):\n      merge-tree: rename merge_trees() to trivial_merge_trees()\n      merge-tree: move logic for existing merge into new function\n      merge-tree: add option parsing and initial shell for real merge function\n      merge-tree: implement real merges\n      merge-ort: split out a separate display_update_messages() function\n      merge-tree: support including merge messages in output\n      merge-ort: provide a merge_get_conflicted_files() helper function\n      merge-ort: remove command-line-centric submodule message from merge-ort\n      merge-tree: provide a list of which files have conflicts\n      merge-tree: provide easy access to `ls-files -u` style info\n      merge-ort: store more specific conflict information\n      merge-ort: optionally produce machine-readable output\n      merge-tree: allow `ls-files -u` style info to be NUL terminated\n      merge-tree: add a --allow-unrelated-histories flag\n      git-merge-tree.txt: add a section on potentional usage mistakes\n      t6429: fix use of non-existent function\n      t6423: add tests of dual directory rename plus add/add conflict\n      merge-ort: small cleanups of check_for_directory_rename\n      merge-ort: make a separate function for freeing struct collisions\n      merge-ort: shuffle the computation and cleanup of potential collisions\n      merge-ort: fix issue with dual rename and add/add conflict\n      merge-ort-wrappers: make printed message match the one from recursive\n      merge-resolve: abort if index does not match HEAD\n      merge: abort if index does not match HEAD for trivial merges\n      merge: do not abort early if one strategy fails to handle the merge\n      merge: fix save_state() to work when there are stat-dirty files\n      merge: make restore_state() restore staged state too\n      merge: ensure we can actually restore pre-merge state\n      merge: do not exit restore_state() prematurely\n      merge-ort: remove translator lego in new \"submodule conflict suggestion\"\n      merge-ort: avoid surprise with new sub_flag variable\n      merge-ort: provide helpful submodule update message when possible\n      merge-ort: remove code obsoleted by other changes\n      rev-list-options.txt: fix simple typo\n      revision: allow --ancestry-path to take an argument\n      merge: only apply autostash when appropriate\n      merge: cleanup confusing logic for handling successful merges\n      merge: small code readability improvement\n      t4301: add more interesting merge-tree testcases\n      t64xx: convert 'test_create_repo' to 'git init'\n      diff: have submodule_format logic avoid additional diff headers\n      diff: fix filtering of additional headers under --remerge-diff\n      diff: fix filtering of merge commits under --remerge-diff\n\nEmir SARI (3):\n      l10n: tr: Update translations for v2.38.0 round #1\n      l10n: tr: v2.38.0 round 2\n      l10n: tr: v2.38.0 3rd round\n\nEric DeCosta (1):\n      fsmonitor: option to allow fsmonitor to run against network-mounted repos\n\nEric Sunshine (25):\n      t2407: fix broken &&-chains in compound statement\n      t1092: fix buggy sparse \"blame\" test\n      t: detect and signal failure within loop\n      t4301: account for behavior differences between sed implementations\n      t4301: fix broken &&-chains and add missing loop termination\n      t4301: emit blank line in more idiomatic fashion\n      t: add skeleton chainlint.pl\n      chainlint.pl: add POSIX shell lexical analyzer\n      chainlint.pl: add POSIX shell parser\n      chainlint.pl: add parser to validate tests\n      chainlint.pl: add parser to identify test definitions\n      chainlint.pl: validate test scripts in parallel\n      chainlint.pl: don't require `return|exit|continue` to end with `&&`\n      t/Makefile: apply chainlint.pl to existing self-tests\n      chainlint.pl: don't require `&` background command to end with `&&`\n      chainlint.pl: don't flag broken &&-chain if `$?` handled explicitly\n      chainlint.pl: don't flag broken &&-chain if failure indicated explicitly\n      chainlint.pl: complain about loops lacking explicit failure handling\n      chainlint.pl: allow `|| echo` to signal failure upstream of a pipe\n      t/chainlint: add more chainlint.pl self-tests\n      test-lib: retire \"lint harder\" optimization hack\n      test-lib: replace chainlint.sed with chainlint.pl\n      t/Makefile: teach `make test` and `make prove` to run chainlint.pl\n      t: retire unused chainlint.sed\n      chainlint: colorize problem annotations and test delimiters\n\nFangyi Zhou (3):\n      help: fix doubled words in explanation for developer interfaces\n      l10n: zh_CN v2.38.0 rounds 1 & 2\n      l10n: zh_CN: 2.38.0 round 3\n\nFelipe Contreras (7):\n      mergetools: vimdiff: fix comment\n      mergetools: vimdiff: make vimdiff3 actually work\n      mergetools: vimdiff: silence annoying messages\n      mergetools: vimdiff: fix for diffopt\n      mergetools: vimdiff: rework tab logic\n      mergetools: vimdiff: fix single window layouts\n      mergetools: vimdiff: simplify tabfirst\n\nFernando Ramos (1):\n      vimdiff: make layout engine more robust against user vim settings\n\nGlen Choo (16):\n      submodule--helper: eliminate internal \"--update\" option\n      submodule--helper tests: add missing \"display path\" coverage\n      submodule--helper update: use display path helper\n      submodule--helper: don't recreate recursive prefix\n      submodule--helper: use correct display path helper\n      submodule--helper update: use --super-prefix\n      submodule--helper: remove display path helper\n      Documentation/git-config.txt: add SCOPES section\n      Documentation: define protected configuration\n      config: learn `git_protected_config()`\n      safe.directory: use git_protected_config()\n      setup.c: create `safe.bareRepository`\n      config.c: NULL check when reading protected config\n      Documentation/git-reflog: remove unneeded \\ from \\{\n      submodule--helper: add \"const\" to copy of \"update_data\"\n      submodule--helper: refactor \"errmsg_str\" to be a \"struct strbuf\"\n\nGoss Geppert (2):\n      dir: traverse into repository\n      dir: minor refactoring / clean-up\n\nHan Xin (6):\n      unpack-objects: low memory footprint for get_data() in dry_run mode\n      object-file.c: refactor write_loose_object() to several steps\n      object-file.c: add \"stream_loose_object()\" to handle large object\n      unpack-objects: use stream_loose_object() to unpack large objects\n      commit-graph.c: no lazy fetch in lookup_commit_in_graph()\n      t5330: remove run_with_limited_processses()\n\nHubert Bossot (1):\n      l10n: fr: The word 'branche' is only feminine\n\nJacob Keller (1):\n      remote: handle negative refspecs in git remote show\n\nJacob Stopak (3):\n      Documentation: fix various repeat word typos\n      Documentation: clean up a few misspelled word typos\n      Documentation: clean up various typos in technical docs\n\nJaydeep Das (1):\n      gpg-interface: add function for converting trust level to string\n\nJean-Noël Avila (3):\n      l10n: fr: v2.38 round 1\n      l10n: fr: v2.38.0 round 2\n      l10n: fr: v2.38.0 round 3\n\nJeff King (64):\n      is_promisor_object(): walk promisor packs in pack-order\n      fetch: stop passing around unused worktrees variable\n      branch: drop unused worktrees variable\n      revisions.txt: escape \"...\" to avoid asciidoc horizontal ellipsis\n      clone: drop extra newline from warning message\n      clone: propagate empty remote HEAD even with other branches\n      clone: use remote branch if it matches default HEAD\n      clone: move unborn head creation to update_head()\n      ref-filter: disable save_commit_buffer while traversing\n      diff-files: move misplaced cleanup label\n      write_midx_bitmap(): drop unused refs_snapshot parameter\n      config.mak.dev: squelch -Wno-missing-braces for older gcc\n      tree-walk: add a mechanism for getting non-canonicalized modes\n      fsck: actually detect bad file modes in trees\n      fsck: downgrade tree badFilemode to \"info\"\n      is_promisor_object(): fix use-after-free of tree buffer\n      compat: add function to enable nonblocking pipes\n      git-compat-util: make MAX_IO_SIZE define globally available\n      pipe_command(): avoid xwrite() for writing to pipe\n      pipe_command(): handle ENOSPC when writing to a pipe\n      pipe_command(): mark stdin descriptor as non-blocking\n      git-compat-util: add UNUSED macro\n      refs: mark unused each_ref_fn parameters\n      refs: mark unused reflog callback parameters\n      refs: mark unused virtual method parameters\n      transport: mark bundle transport_options as unused\n      streaming: mark unused virtual method parameters\n      config: mark unused callback parameters\n      hashmap: mark unused callback parameters\n      mark unused read_tree_recursive() callback parameters\n      run-command: mark unused async callback parameters\n      is_path_owned_by_current_uid(): mark \"report\" parameter as unused\n      xdiff: drop unused mmfile parameters from xdl_do_histogram_diff()\n      log-tree: drop unused commit param in remerge_diff()\n      match_pathname(): drop unused \"flags\" parameter\n      verify_one_sparse(): drop unused parameters\n      reftable: drop unused parameter from reader_seek_linear()\n      reflog: assert PARSE_OPT_NONEG in parse-options callbacks\n      xdiff: drop unused mmfile parameters from xdl_do_patience_diff()\n      pass subcommand \"prefix\" arguments to parse_options()\n      maintenance: add parse-options boilerplate for subcommands\n      remote: run \"remote rm\" argv through parse_options()\n      pack-bitmap-write: drop unused pack_idx_entry parameters\n      tempfile: drop active flag\n      tempfile: update comment describing state transitions\n      test-crontab: minor memory and error handling fixes\n      lookup_commit_in_graph(): use prepare_commit_graph() to check for graph\n      rev-list: disable commit graph with --verify-objects\n      parse_object(): allow skipping hash check\n      upload-pack: skip parse-object re-hashing of \"want\" objects\n      parse_object(): check commit-graph when skip_hash set\n      t1060: check partial clone of misnamed blob\n      list_objects_filter_copy(): deep-copy sparse_oid_name field\n      transport: deep-copy object-filter struct for fetch-pack\n      transport: free filter options in disconnect_git()\n      list_objects_filter_options: plug leak of filter_spec strings\n      prepare_repo_settings(): plug leak of config values\n      fetch: stop checking for NULL transport->remote in do_fetch()\n      fetch: add branch.*.merge to default ref-prefix extension\n      list-objects-filter: don't memset after releasing filter struct\n      list-objects-filter: handle null default filter spec\n      list-objects-filter: add and use initializers\n      list-objects-filter: convert filter_spec to a strbuf\n      list-objects-filter: initialize sub-filter structs\n\nJohannes Schindelin (38):\n      merge-ort: store messages in a list, not in a single strbuf\n      merge-ort: make `path_messages` a strmap to a string_list\n      Git 2.30.5\n      Git 2.31.4\n      Git 2.32.3\n      Git 2.33.4\n      Git 2.34.4\n      Git 2.35.4\n      Git 2.36.2\n      add --interactive: allow `update` to stage deleted files\n      tests: fix incorrect --write-junit-xml code\n      mergetool(vimdiff): allow paths to contain spaces again\n      shortlog: use a stable sort\n      t5351: avoid relying on `core.fsyncMethod = batch` to be supported\n      t5351: avoid using `test_cmp` for binary data\n      windows: include the Python bits when building Git for Windows\n      mingw: remove unneeded `NO_GETTEXT` directive\n      mingw: remove unneeded `NO_CURL` directive\n      lstat(mingw): correctly detect ENOTDIR scenarios\n      merge-ort: clean up after failed merge\n      merge-ort: do leave trace2 region even if checkout fails\n      setup: fix some formatting\n      setup: prepare for more detailed \"dubious ownership\" messages\n      mingw: provide details about unsafe directories' ownership\n      mingw: be more informative when ownership check fails on FAT32\n      mingw: handle a file owned by the Administrators group correctly\n      scalar unregister: stop FSMonitor daemon\n      range-diff: reorder argument handling\n      range-diff: consistently validate the arguments\n      range-diff: optionally accept pathspecs\n      add -p: avoid ambiguous signed/unsigned comparison\n      t3701: test the built-in `add -i` regardless of NO_PERL\n      t6132(NO_PERL): do not run the scripted `add -p`\n      add -p: detect more mismatches between plain vs colored diffs\n      add -p: gracefully handle unparseable hunk headers in colored diffs\n      add -p: ignore dirty submodules\n      git help: special-case `scalar`\n      scalar: implement the `help` subcommand\n\nJonathan Tan (1):\n      fetch-pack: write effective filter to trace2\n\nJordi Mas (3):\n      l10n: Update Catalan translation\n      l10n: Update Catalan translation\n      l10n: Update Catalan translation\n\nJosh Steadmon (1):\n      fetch-pack: add tracing for negotiation rounds\n\nJulien Rouhaud (1):\n      gitweb: remove title shortening heuristics\n\nJunio C Hamano (45):\n      revision: mark blobs needed for resolve-undo as reachable\n      A regression fix for 2.37\n      Git 2.37.1\n      builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()\n      The first batch after Git 2.37\n      fsck: do not dereference NULL while checking resolve-undo data\n      The second batch\n      The third batch\n      The fourth batch\n      The fifth batch\n      builtin/remote.c: use the right kind of STRING_LIST_INIT\n      The sixth batch\n      The seventh batch\n      Downmerge a handful of fixes for 2.37.x maintenance track\n      The eighth batch\n      The ninth batch\n      doc: consolidate --rerere-autoupdate description\n      doc: clarify rerere-autoupdate\n      Downmerge a bit more for 2.37.x\n      The tenth batch\n      The eleventh batch\n      Git 2.37.2\n      The twelfth batch\n      The thirteenth batch\n      The fourteenth batch\n      t5329: notice a failure within a loop\n      The fifteenth batch\n      A handful more topics from the 'master' front for 2.37.3\n      pretty: separate out the logic to decide the use of in-body from\n      format-patch: allow forcing the use of in-body From: header\n      format-patch: learn format.forceInBodyFrom configuration variable\n      The sixteenth batch\n      Git 2.37.3\n      The seventeenth batch\n      The eighteenth batch\n      The nineteenth batch\n      The twentieth batch\n      Merge a handful of topics from the 'master' front\n      Prepare for 2.38-rc0\n      Git 2.38-rc0\n      A bit more of remaining topics before -rc1\n      Final batch before -rc1\n      Git 2.38-rc1\n      Git 2.38-rc2\n      Git 2.38\n\nJustin Donnelly (1):\n      git-prompt: show presence of unresolved conflicts at command prompt\n\nKilian Kilger (2):\n      git-p4: fix bug with encoding of p4 client name\n      git-p4: refactoring of p4CmdList()\n\nKyle Zhao (1):\n      send-pack.c: add config push.useBitmaps\n\nLessley Dennington (1):\n      osx-keychain: fix compiler warning\n\nLi Linchao (3):\n      ls-files: update test style\n      remote-curl: send Accept-Language header to server\n      rev-list: support human-readable output for `--disk-usage`\n\nLinus Torvalds (1):\n      symbolic-ref: refuse to set syntactically invalid target\n\nManuel Boni (1):\n      config.txt: document include, includeIf\n\nMartin Ågren (4):\n      config/core.txt: fix minor issues for `core.sparseCheckoutCone`\n      t4200: drop irrelevant code\n      read-cache: make `do_read_index()` always set up `istate->repo`\n      cmd-list.perl: fix identifying man sections\n\nMatheus Tavares (7):\n      checkout: document bug where delayed checkout counts entries twice\n      checkout: show bug about failed entries being included in final report\n      checkout: fix two bugs on the final count of updated entries\n      pkt-line.h: move comment closer to the associated code\n      t0021: avoid grepping for a Perl-specific string at filter output\n      t0021: implementation the rot13-filter.pl script in C\n      tests: use the new C rot13-filter helper to avoid PERL prereq\n\nMatthew John Cheetham (1):\n      scalar: enable built-in FSMonitor on `register`\n\nMiaoqian Lin (1):\n      commit-graph: Fix missing closedir in expire_commit_graphs\n\nMichael J Gruber (3):\n      sequencer: do not translate reflog messages\n      sequencer: do not translate parameters to error_resolve_conflict()\n      sequencer: do not translate command names\n\nMoritz Baumann (3):\n      git-p4: fix CR LF handling for utf16 files\n      git-p4: fix typo in P4Submit.applyCommit()\n      git-p4: fix error handling in P4Unshelve.renameBranch()\n\nPeter Krefting (2):\n      l10n: sv.po: Update Swedish translation (5482t0f0u)\n      l10n: sv.po: Update Swedish translation (5484t0f0u)\n\nPhilip Oakley (1):\n      doc add: renormalize is not idempotent for CRCRLF\n\nPhilippe Blain (3):\n      diff-format.txt: dst can be 0* SHA-1 when path is deleted, too\n      diff-format.txt: correct misleading wording\n      diff-index.txt: update raw output format in examples\n\nPhillip Wood (5):\n      xdiff: introduce XDL_ALLOC_ARRAY()\n      xdiff: introduce xdl_calloc\n      xdiff: introduce XDL_CALLOC_ARRAY()\n      xdiff: introduce XDL_ALLOC_GROW()\n      tests: cache glibc version check\n\nRalf Thielow (2):\n      l10n: de.po: update German translation\n      l10n: de.po: update German translation\n\nRené Scharfe (28):\n      archive: update format documentation\n      archive: rename archiver data field to filter_command\n      archive-tar: factor out write_block()\n      archive-tar: add internal gzip implementation\n      archive-tar: use OS_CODE 3 (Unix) for internal gzip\n      archive-tar: use internal gzip by default\n      combine-diff: abort if --ignore-matching-lines is given\n      combine-diff: abort if --output is given\n      cocci: avoid normalization rules for memcpy\n      mingw: avoid mktemp() in mkstemp() implementation\n      mergesort: unify ranks loops\n      mergesort: tighten merge loop\n      mergesort: add macros for typed sort of linked lists\n      test-mergesort: use DEFINE_LIST_SORT_DEBUG\n      test-mergesort: use DEFINE_LIST_SORT\n      blame: use DEFINE_LIST_SORT\n      commit: use DEFINE_LIST_SORT\n      fetch-pack: use DEFINE_LIST_SORT\n      packfile: use DEFINE_LIST_SORT\n      mergesort: remove llist_mergesort()\n      nonblock: support Windows\n      tempfile: avoid directory cleanup race\n      test-mergesort: read sort input all at once\n      test-mergesort: use mem_pool for sort input\n      diff-no-index: release strbuf on queue error\n      diff-no-index: release prefixed filenames\n      diff-no-index: simplify argv index calculation\n      add -p: fix worktree patch mode prompts\n\nRichard Oliver (1):\n      mktree: do not check type of remote objects\n\nSZEDER Gábor (30):\n      Makefile: build 'gitweb' in the default target\n      multi-pack-index: simplify handling of unknown --options\n      index-format.txt: remove outdated list of supported extensions\n      git.c: update NO_PARSEOPT markings\n      t3301-notes.sh: check that default operation mode doesn't take arguments\n      t5505-remote.sh: check the behavior without a subcommand\n      t0040-parse-options: test parse_options() with various 'parse_opt_flags'\n      api-parse-options.txt: fix description of OPT_CMDMODE\n      parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options\n      parse-options: clarify the limitations of PARSE_OPT_NODASH\n      parse-options: drop leading space from '--git-completion-helper' output\n      parse-options: add support for parsing subcommands\n      builtin/bundle.c: let parse-options parse subcommands\n      builtin/commit-graph.c: let parse-options parse subcommands\n      builtin/gc.c: let parse-options parse 'git maintenance's subcommands\n      builtin/hook.c: let parse-options parse subcommands\n      builtin/multi-pack-index.c: let parse-options parse subcommands\n      builtin/notes.c: let parse-options parse subcommands\n      builtin/reflog.c: let parse-options parse subcommands\n      builtin/remote.c: let parse-options parse subcommands\n      builtin/sparse-checkout.c: let parse-options parse subcommands\n      builtin/stash.c: let parse-options parse subcommands\n      builtin/worktree.c: let parse-options parse subcommands\n      promisor-remote: fix xcalloc() argument order\n      t0040-parse-options: remove leftover debugging\n      test-parse-options.c: don't use for loop initial declaration\n      test-parse-options.c: fix style of comparison with zero\n      notes: simplify default operation mode arguments check\n      notes, remote: show unknown subcommands between `'\n      t/Makefile: remove 'test-results' on 'make clean'\n\nShaoxuan Yuan (22):\n      t7002: add tests for moving out-of-cone file/directory\n      t1092: mv directory from out-of-cone to in-cone\n      mv: update sparsity after moving from out-of-cone to in-cone\n      mv: decouple if/else-if checks using goto\n      mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit\n      mv: check if <destination> exists in index to handle overwriting\n      mv: use flags mode for update_mode\n      mv: add check_dir_in_index() and solve general dir check issue\n      t1092: add tests for `git-rm`\n      pathspec.h: move pathspec_needs_expanded_index() from reset.c to here\n      rm: expand the index only when necessary\n      rm: integrate with sparse-index\n      t7002: add tests for moving from in-cone to out-of-cone\n      mv: rename check_dir_in_index() to empty_dir_has_sparse_contents()\n      mv: free the with_slash in check_dir_in_index()\n      mv: check if <destination> is a SKIP_WORKTREE_DIR\n      mv: remove BOTH from enum update_mode\n      mv: from in-cone to out-of-cone\n      mv: cleanup empty WORKING_DIRECTORY\n      advice.h: add advise_on_moving_dirty_path()\n      mv: check overwrite for in-to-out move\n      builtin/mv.c: fix possible segfault in add_slash()\n\nSiddharth Asthana (4):\n      revision: improve commit_rewrite_person()\n      ident: move commit_rewrite_person() to ident.c\n      ident: rename commit_rewrite_person() to apply_mailmap_to_header()\n      cat-file: add mailmap support\n\nTao Klerks (1):\n      rev-parse: documentation adjustment - mention remote tracking with @{u}\n\nTaylor Blau (14):\n      pack-objects.h: remove outdated pahole results\n      commit-graph: pass repo_settings instead of repository\n      t5318: demonstrate commit-graph generation v2 corruption\n      commit-graph: introduce `repo_find_commit_pos_in_graph()`\n      commit-graph: fix corrupt upgrade from generation v1 to v2\n      t1006: extract --batch-command inputs to variables\n      builtin/cat-file.c: support NUL-delimited input with `-z`\n      t5326: demonstrate potential bitmap corruption\n      t/lib-bitmap.sh: avoid silencing stderr\n      midx.c: extract `struct midx_fanout`\n      midx.c: extract `midx_fanout_add_midx_fanout()`\n      midx.c: extract `midx_fanout_add_pack_fanout()`\n      midx.c: include preferred pack correctly with existing MIDX\n      midx.c: avoid adding preferred objects twice\n\nTeng Long (8):\n      pack-bitmap.c: fix formatting of error messages\n      pack-bitmap.c: mark more strings for translations\n      pack-bitmap.c: rename \"idx_name\" to \"bitmap_name\"\n      pack-bitmap.c: do not ignore error when opening a bitmap file\n      pack-bitmap.c: using error() instead of silently returning -1\n      pack-bitmap.c: continue looping when first MIDX bitmap is found\n      api-trace2.txt: print config key-value pair\n      tr2: shows scope unconditionally in addition to key-value pair\n\nTodd Zullinger (2):\n      docs: fix a few recently broken links\n      api docs: link to html version of api-trace2\n\nVictoria Dye (37):\n      scalar: reword command documentation to clarify purpose\n      scalar: convert README.md into a technical design doc\n      checkout: fix nested sparse directory diff in sparse index\n      oneway_diff: handle removed sparse directories\n      cache.h: create 'index_name_pos_sparse()'\n      unpack-trees: unpack new trees as sparse directories\n      scalar-diagnose: use \"$GIT_UNZIP\" in test\n      scalar-diagnose: avoid 32-bit overflow of size_t\n      scalar-diagnose: add directory to archiver more gently\n      scalar-diagnose: move 'get_disk_info()' to 'compat/'\n      scalar-diagnose: move functionality to common location\n      diagnose.c: add option to configure archive contents\n      builtin/diagnose.c: create 'git diagnose' builtin\n      builtin/diagnose.c: add '--mode' option\n      builtin/bugreport.c: create '--diagnose' option\n      scalar-diagnose: use 'git diagnose --mode=all'\n      scalar: update technical doc roadmap\n      scalar: constrain enlistment search\n      scalar-unregister: handle error codes greater than 0\n      scalar-[un]register: clearly indicate source of error\n      scalar-delete: do not 'die()' in 'delete_enlistment()'\n      scalar: move config setting logic into its own function\n      scalar: update technical doc roadmap with FSMonitor support\n      p0004: fix prereq declaration\n      p0006: fix 'read-tree' argument ordering\n      unpack-trees: fix sparse directory recursion check\n      scalar: fix command documentation section header\n      scalar: include in standard Git build & installation\n      scalar: add to 'git help -a' command list\n      scalar-clone: add test coverage\n      t/perf: add Scalar performance tests\n      t/perf: add 'GIT_PERF_USE_SCALAR' run option\n      Documentation/technical: include Scalar technical doc\n      diagnose.c: refactor to safely use 'd_type'\n      Documentation: add ReviewingGuidelines\n      diagnose: add to command-list.txt\n      version: fix builtin linking & documentation\n\nYi-Jyun Pan (1):\n      l10n: zh_TW.po: Git 2.38.0, round 3\n\nZheNing Hu (2):\n      ls-files: introduce \"--format\" option\n      ls-files: fix black space in error message\n\nbrian m. carlson (2):\n      sha256: add support for Nettle\n      gc: use temporary file for editing crontab\n\nÆvar Arnfjörð Bjarmason (153):\n      t0008: don't rely on default \".git/info/exclude\"\n      tests: don't depend on template-created .git/branches\n      tests: don't assume a .git/info for .git/info/grafts\n      tests: don't assume a .git/info for .git/info/attributes\n      tests: don't assume a .git/info for .git/info/refs\n      tests: don't assume a .git/info for .git/info/exclude\n      tests: don't assume a .git/info for .git/info/sparse-checkout\n      object-file.c: factor out deflate part of write_loose_object()\n      core doc: modernize core.bigFileThreshold documentation\n      git-submodule.sh: remove unused sanitize_submodule_env()\n      git-submodule.sh: remove unused $prefix variable\n      git-submodule.sh: make the \"$cached\" variable a boolean\n      git-submodule.sh: remove unused top-level \"--branch\" argument\n      submodule--helper: have --require-init imply --init\n      submodule update: remove \"-v\" option\n      submodule--helper: rename \"absorb-git-dirs\" to \"absorbgitdirs\"\n      submodule--helper: report \"submodule\" as our name in some \"-h\" output\n      submodule--helper: understand --checkout, --merge and --rebase synonyms\n      git-submodule.sh: use \"$quiet\", not \"$GIT_QUIET\"\n      git-sh-setup.sh: remove \"say\" function, change last users\n      gitweb/Makefile: define all .PHONY prerequisites inline\n      gitweb/Makefile: add a $(GITWEB_ALL) variable\n      gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars\n      gitweb/Makefile: prepare to merge into top-level Makefile\n      gitweb: remove \"test\" and \"test-installed\" targets\n      gitweb/Makefile: include in top-level Makefile\n      gitweb/Makefile: add a \"NO_GITWEB\" parameter\n      tests: add missing double quotes to included library paths\n      test-lib.sh: fix prepend_var() quoting issue\n      config tests: fix harmless but broken \"rm -r\" cleanup\n      submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags\n      check-ref-format: fix trivial memory leak\n      clone: fix memory leak in wanted_peer_refs()\n      submodule.c: free() memory from xgetcwd()\n      revert: free \"struct replay_opts\" members\n      cat-file: fix a memory leak in --batch-command mode\n      merge-file: refactor for subsequent memory leak fix\n      merge-file: fix memory leaks on error path\n      checkout: avoid \"struct unpack_trees_options\" leak\n      gc: fix a memory leak\n      cat-file: fix a common \"struct object_context\" memory leak\n      pull: fix a \"struct oid_array\" memory leak\n      test-tool test-hash: fix a memory leak\n      test-tool path-utils: fix a memory leak\n      test-tool {dump,scrap}-cache-tree: fix memory leaks\n      test-tool urlmatch-normalization: fix a memory leak\n      test-tool regex: call regfree(), fix memory leaks\n      test-tool json-writer: fix memory leaks\n      test-tool bloom: fix memory leaks\n      test-tool ref-store: fix a memory leak\n      test-tool delta: fix a memory leak\n      Makefile: remove mandatory \"spatch\" arguments from SPATCH_FLAGS\n      Makefile & .gitignore: ignore & clean \"git.res\", not \"*.res\"\n      cocci: add a \"coccicheck-test\" target and test *.cocci rules\n      cocci: have \"coccicheck{,-pending}\" depend on \"coccicheck-test\"\n      cocci: add and apply a rule to find \"unused\" strbufs\n      cocci: generalize \"unused\" rule to cover more than \"strbuf\"\n      trace2: only include \"fsync\" events if we git_fsync()\n      test-lib: use $1, not $@ in test_known_broken_{ok,failure}_\n      test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler\n      test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT\n      test-lib: add a --invert-exit-code switch\n      t/README: reword the \"GIT_TEST_PASSING_SANITIZE_LEAK\" description\n      test-lib: add a SANITIZE=leak logging mode\n      t/Makefile: don't remove test-results in \"clean-except-prove-cache\"\n      tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh\n      test-lib: simplify by removing test_external\n      test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode\n      test-lib: have the \"check\" mode for SANITIZE=leak consider leak logs\n      leak tests: don't skip some tests under SANITIZE=leak\n      leak tests: mark passing SANITIZE=leak tests as leak-free\n      upload-pack: fix a memory leak in create_pack_file()\n      CI: use \"GIT_TEST_SANITIZE_LEAK_LOG=true\" in linux-leaks\n      bisect.c: add missing \"goto\" for release_revisions()\n      test-fast-rebase helper: use release_revisions() (again)\n      log: fix a memory leak in \"git show <revision>...\"\n      log: refactor \"rev.pending\" code in cmd_show()\n      bisect.c: partially fix bisect_rev_setup() memory leak\n      revisions API: don't leak memory on argv elements that need free()-ing\n      help.c: refactor drop_prefix() to use a \"switch\" statement\"\n      help.c: remove common category behavior from drop_prefix() behavior\n      git help doc: use \"<doc>\" instead of \"<guide>\"\n      git docs: add a category for user-facing file, repo and command UX\n      git docs: add a category for file formats, protocols and interfaces\n      docs: move commit-graph format docs to man section 5\n      docs: move protocol-related docs to man section 5\n      docs: move index format docs to man section 5\n      docs: move signature docs to man section 5\n      docs: move pack format docs to man section 5\n      docs: move cruft pack docs to gitformat-pack\n      docs: move http-protocol docs to man section 5\n      hook API: don't segfault on strbuf_addf() to NULL \"out\"\n      Makefile + hash.h: remove PPC_SHA1 implementation\n      Makefile: use $(OBJECTS) instead of $(C_OBJ)\n      git-compat-util.h: use \"UNUSED\", not \"UNUSED(var)\"\n      git-compat-util.h: use \"deprecated\" for UNUSED variables\n      submodule tests: test usage behavior\n      submodule tests: test for \"add <repository> <abs-path>\"\n      submodule--helper: remove unused \"name\" helper\n      submodule--helper: remove unused \"list\" helper\n      test-tool submodule-config: remove unused \"--url\" handling\n      submodule--helper: move \"is-active\" to a test-tool\n      submodule--helper: move \"check-name\" to a test-tool\n      submodule--helper: move \"resolve-relative-url-test\" to a test-tool\n      submodule--helper style: don't separate declared variables with \\n\\n\n      submodule--helper style: add \\n\\n after variable declarations\n      submodule--helper: replace memset() with { 0 }-initialization\n      submodule--helper: use xstrfmt() in clone_submodule()\n      submodule--helper: move \"sb\" in clone_submodule() to its own scope\n      submodule--helper: add \"const\" to passed \"module_clone_data\"\n      submodule--helper: add \"const\" to passed \"struct update_data\"\n      submodule--helper: don't redundantly check \"else if (res)\"\n      submodule--helper: rename \"int res\" to \"int ret\"\n      submodule--helper: return \"ret\", not \"1\" from update_submodule()\n      submodule--helper: add missing braces to \"else\" arm\n      submodule--helper: don't call submodule_strategy_to_string() in BUG()\n      submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()\n      submodule--helper: use \"code\" in run_update_command()\n      submodule--helper: don't exit() on failure, return\n      submodule--helper: libify determine_submodule_update_strategy()\n      submodule--helper: libify \"must_die_on_failure\" code paths\n      submodule--helper update: don't override 'checkout' exit code\n      submodule--helper: libify \"must_die_on_failure\" code paths (for die)\n      submodule--helper: check repo{_submodule,}_init() return values\n      submodule--helper: libify more \"die\" paths for module_update()\n      submodule--helper: libify even more \"die\" paths for module_update()\n      submodule--helper: fix bad config API usage\n      submodule--helper: fix a leak in \"clone_submodule\"\n      submodule--helper: fix trivial get_default_remote_submodule() leak\n      submodule--helper: fix most \"struct pathspec\" memory leaks\n      submodule--helper: \"struct pathspec\" memory leak in module_update()\n      submodule--helper: don't leak {run,capture}_command() cp.dir argument\n      submodule--helper: add and use *_release() functions\n      submodule--helper: fix \"errmsg_str\" memory leak\n      submodule--helper: fix \"sm_path\" and other \"module_cb_list\" leaks\n      submodule--helper: fix a leak with repo_clear()\n      submodule--helper: fix a memory leak in get_default_remote_submodule()\n      submodule--helper: fix \"reference\" leak\n      submodule--helper: fix obscure leak in module_add()\n      submodule--helper: fix a leak in module_add()\n      submodule--helper: fix a memory leak in print_status()\n      submodule--helper: free some \"displaypath\" in \"struct update_data\"\n      submodule--helper: free rest of \"displaypath\" in \"struct update_data\"\n      submodule--helper: fix a configure_added_submodule() leak\n      docs: add and use include template for config/* includes\n      grep docs: de-duplicate configuration sections\n      send-email docs: de-duplicate configuration sections\n      apply docs: de-duplicate configuration sections\n      notes docs: de-duplicate and combine configuration sections\n      difftool docs: de-duplicate configuration sections\n      log docs: de-duplicate configuration sections\n      docs: add CONFIGURATION sections that map to a built-in\n      docs: add CONFIGURATION sections that fuzzy map to built-ins\n\nØystein Walle (1):\n      rev-parse --parseopt: detect missing opt-spec\n\n"},{"id":"464222","messageId":"c8d43514-6f78-387c-b5aa-0657c75d5b4e@virtuell-zuhause.de","threadId":"58549","inReplyTo":"xmqqmtacu8bw.fsf@gitster.g","subject":"Re: [ANNOUNCE] Git v2.38.0","fromName":"Thomas Braun","fromEmail":"thomas.braun@virtuell-zuhause.de","sentAt":"2022-10-05T09:39:11Z","receivedAt":"2022-10-05T10:16:38Z","isPatch":false,"sender":{"key":"thomas.braun@virtuell-zuhause.de","avatar":"https://avatars.githubusercontent.com/u/1185677?v=4"},"body":"On 03.10.2022 19:26, Junio C Hamano wrote:\n\nHi Junio and Ævar,\n\nthe last git release has\n\n> submodule--helper: remove unused \"list\" helper\n\nin the shortlog which is 31955475 (submodule--helper: remove unused \n\"list\" helper, 2022-09-01).\n\nNow the inevitable \"I'm using this in production since 5 years and now \nit's broken\" has happened.\n\nJust for the record \"git submodule status\" is a good replacement for my \ncase. I happen to need it on Windows using a CMD shell.\n\nIs there a general rule that commands which have \"--helper\" in them \nshould not be relied on?\n\nThomas\n\n"},{"id":"464251","messageId":"xmqqlepuoz2r.fsf@gitster.g","threadId":"58549","inReplyTo":"c8d43514-6f78-387c-b5aa-0657c75d5b4e@virtuell-zuhause.de","subject":"Re: [ANNOUNCE] Git v2.38.0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2022-10-05T19:22:20Z","receivedAt":"2022-10-05T19:22:36Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Thomas Braun <thomas.braun@virtuell-zuhause.de> writes:\n\n> On 03.10.2022 19:26, Junio C Hamano wrote:\n>\n> Hi Junio and Ævar,\n>\n> the last git release has\n>\n>> submodule--helper: remove unused \"list\" helper\n>\n> in the shortlog which is 31955475 (submodule--helper: remove unused\n> \"list\" helper, 2022-09-01).\n\nX-<.\n\n> Now the inevitable \"I'm using this in production since 5 years and now\n> it's broken\" has happened.\n\nX-< again.  Next time when you are using unsupported implementation\ndetail, please report when the potential breakage is still in 'next'\nand not down in 'master'.\n\n> Just for the record \"git submodule status\" is a good replacement for\n> my case. I happen to need it on Windows using a CMD shell.\n>\n> Is there a general rule that commands which have \"--helper\" in them\n> should not be relied on?\n\nA good rule of thumb is to consider anything with double-dash as an\nimplementation detail that are not end-user facing, I would say.\n\nThanks, and sorry for the breakage.\n"}]}