{"thread":{"id":"61860","subject":"[ANNOUNCE] Git v2.46.0","startedAt":"2024-07-29T17:09:42Z","lastAt":"2024-07-30T22:51:35Z","messageCount":2,"participants":["Junio C Hamano","rsbecker@nexbridge.com"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"499524","messageId":"xmqqzfq0i0qa.fsf@gitster.g","threadId":"61860","inReplyTo":null,"subject":"[ANNOUNCE] Git v2.46.0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-07-29T17:09:33Z","receivedAt":"2024-07-29T17:09:42Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"The latest feature release Git v2.46.0 is now available at the\nusual places.  It is comprised of 746 non-merge commits since\nv2.45.0, contributed by 96 people, 31 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.46.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.45.0 are as follows.\nWelcome to the Git development community!\n\n  Aaron Plattner, Abhijeet Sonar, Apple Product Security, Brooke\n  Kuhlmann, Csókás, Bence, Darcy Burke, David Bimmler, Dov\n  Murik, Dr. David Alan Gilbert, Fahad Alrashed, Filip Hejsek,\n  Heghedus Razvan, hms5232, Ivan Tse, James Liu, Jesús Ariel\n  Cabello Mateos, Jun T, Koji Nakamaru, Léonard Michelet,\n  lolligerhans@gmx.de, Marcel Telka, Mathew George, Matt Cree,\n  Ngoo Ka-iu, Nightfeather Chen, Paul Millar, Piotr Szlazak,\n  Rikita Ishikawa, Roland Hieber, Shane Sun, and Tom Hughes.\n\nReturning contributors who helped this release are as follows.\nThanks for your continued support.\n\n  Achu Luma, Adam Johnson, Alexander Shopov, Arkadii Yakovets,\n  Bagas Sanjaya, Beat Bolli, brian m. carlson, Chandra Pratap,\n  Christian Couder, Christian Hesse, Dario Gjorgjevski, D. Ben\n  Knoble, Derrick Stolee, Dragan Simic, Elijah Newren, Emir SARI,\n  Eric Sunshine, Eric Wong, Ghanshyam Thakkar, Ian Wienand,\n  Jean-Noël Avila, Jeff King, Johannes Schindelin, Johannes\n  Sixt, John Passaro, John Paul Adrian Glaubitz, Jonathan Nieder,\n  Jonathan Tan, Josh Soref, Josh Steadmon, Junio C Hamano, Justin\n  Tobler, Kaartic Sivaraam, Karthik Nayak, Kate Golovanova, Kirill\n  Smelkov, Kisaragi Hiu, Kyle Lippincott, Kyle Zhao, Linus Arver,\n  Lumynous, Martin Ågren, Matthias Aßhauer, Matthias Rüster,\n  Mike Hommey, Orgad Shaneh, Øystein Walle, Patrick Steinhardt,\n  Peter Krefting, Phillip Wood, Ralf Thielow, Ramsay Jones, Randall\n  S. Becker, René Scharfe, Rubén Justo, Stefan Haller, SZEDER\n  Gábor, Taylor Blau, Teng Long, Torsten Bögershausen, Victoria\n  Dye, Vũ Tiến Hưng, Xing Xin, Yi-Jyun Pan, 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.46 Release Notes\n=======================\n\nUI, Workflows & Features\n\n * The \"--rfc\" option of \"git format-patch\" learned to take an\n   optional string value to be used in place of \"RFC\" to tweak the\n   \"[PATCH]\" on the subject header.\n\n * The credential helper protocol, together with the HTTP layer, have\n   been enhanced to support authentication schemes different from\n   username & password pair, like Bearer and NTLM.\n\n * Command line completion script (in contrib/) learned to complete\n   \"git symbolic-ref\" a bit better (you need to enable plumbing\n   commands to be completed with GIT_COMPLETION_SHOW_ALL_COMMANDS).\n\n * When the user responds to a prompt given by \"git add -p\" with an\n   unsupported command, list of available commands were given, which\n   was too much if the user knew what they wanted to type but merely\n   made a typo.  Now the user gets a much shorter error message.\n\n * The color parsing code learned to handle 12-bit RGB colors, spelled\n   as \"#RGB\" (in addition to \"#RRGGBB\" that is already supported).\n\n * The operation mode options (like \"--get\") the \"git config\" command\n   uses have been deprecated and replaced with subcommands (like \"git\n   config get\").\n\n * \"git tag\" learned the \"--trailer\" option to futz with the trailers\n   in the same way as \"git commit\" does.\n\n * A new global \"--no-advice\" option can be used to disable all advice\n   messages, which is meant to be used only in scripts.\n\n * Updates to symbolic refs can now be made as a part of ref\n   transaction.\n\n * The trailer API has been reshuffled a bit.\n\n * Terminology to call various ref-like things are getting\n   straightened out.\n\n * The command line completion script (in contrib/) has been adjusted\n   to the recent update to \"git config\" that adopted subcommand based\n   UI.\n\n * The knobs to tweak how reftable files are written have been made\n   available as configuration variables.\n\n * When \"git push\" notices that the commit at the tip of the ref on\n   the other side it is about to overwrite does not exist locally, it\n   used to first try fetching it if the local repository is a partial\n   clone. The command has been taught not to do so and immediately\n   fail instead.\n\n * The promisor.quiet configuration knob can be set to true to make\n   lazy fetching from promisor remotes silent.\n\n * The inter/range-diff output has been moved to the end of the patch\n   when format-patch adds it to a single patch, instead of writing it\n   before the patch text, to be consistent with what is done for a\n   cover letter for a multi-patch series.\n\n * A new command has been added to migrate a repository that uses the\n   files backend for its ref storage to use the reftable backend, with\n   limitations.\n\n * \"git diff --exit-code --ext-diff\" learned to take the exit status\n   of the external diff driver into account when deciding the exit\n   status of the overall \"git diff\" invocation when configured to do\n   so.\n\n * \"git update-ref --stdin\" learned to handle transactional updates of\n   symbolic-refs.\n\n * \"git format-patch --interdiff\" for multi-patch series learned to\n   turn on cover letters automatically (unless told never to enable\n   cover letter with \"--no-cover-letter\" and such).\n\n * The \"--heads\" option of \"ls-remote\" and \"show-ref\" has been been\n   deprecated; \"--branches\" replaces \"--heads\".\n\n * For over a year, setting add.interactive.useBuiltin configuration\n   variable did nothing but giving a \"this does not do anything\"\n   warning.  The warning has been removed.\n\n * The http transport can now be told to send request with\n   authentication material without first getting a 401 response.\n\n * A handful of entries are added to the GitFAQ document.\n\n * \"git var GIT_SHELL_PATH\" should report the path to the shell used\n   to spawn external commands, but it didn't do so on Windows, which\n   has been corrected.\n\n\nPerformance, Internal Implementation, Development Support etc.\n\n * Advertise \"git contacts\", a tool for newcomers to find people to\n   ask review for their patches, a bit more in our developer\n   documentation.\n\n * In addition to building the objects needed, try to link the objects\n   that are used in fuzzer tests, to make sure at least they build\n   without bitrot, in Linux CI runs.\n\n * Code to write out reftable has seen some optimization and\n   simplification.\n\n * Tests to ensure interoperability between reftable written by jgit\n   and our code have been added and enabled in CI.\n\n * The singleton index_state instance \"the_index\" has been eliminated\n   by always instantiating \"the_repository\" and replacing references\n   to \"the_index\"  with references to its .index member.\n\n * Git-GUI has a new maintainer, Johannes Sixt.\n\n * The \"test-tool\" has been taught to run testsuite tests in parallel,\n   bypassing the need to use the \"prove\" tool.\n\n * The \"whitespace check\" task that was enabled for GitHub Actions CI\n   has been ported to GitLab CI.\n\n * The refs API lost functions that implicitly assumes to work on the\n   primary ref_store by forcing the callers to pass a ref_store as an\n   argument.\n\n * Code clean-up to reduce inter-function communication inside\n   builtin/config.c done via the use of global variables.\n\n * The pack bitmap code saw some clean-up to prepare for a follow-up topic.\n\n * Preliminary code clean-up for \"git send-email\".\n\n * The default \"creation-factor\" used by \"git format-patch\" has been\n   raised to make it more aggressively find matching commits.\n\n * Before discovering the repository details, We used to assume SHA-1\n   as the \"default\" hash function, which has been corrected. Hopefully\n   this will smoke out codepaths that rely on such an unwarranted\n   assumptions.\n\n * The project decision making policy has been documented.\n\n * The strcmp-offset tests have been rewritten using the unit test\n   framework.\n\n * \"git add -p\" learned to complain when an answer with more than one\n   letter is given to a prompt that expects a single letter answer.\n\n * The alias-expanded command lines are logged to the trace output.\n\n * A new test was added to ensure git commands that are designed to\n   run outside repositories do work.\n\n * A few tests in reftable library have been rewritten using the\n   unit test framework.\n\n * A pair of test helpers that essentially are unit tests on hash\n   algorithms have been rewritten using the unit-tests framework.\n\n * A test helper that essentially is unit tests on the \"decorate\"\n   logic has been rewritten using the unit-tests framework.\n\n * Many memory leaks in the sparse-checkout code paths have been\n   plugged.\n\n * \"make check-docs\" noticed problems and reported to its output but\n   failed to signal its findings with its exit status, which has been\n   corrected.\n\n * Building with \"-Werror -Wwrite-strings\" is now supported.\n\n * To help developers, the build procedure now allows builders to use\n   CFLAGS_APPEND to specify additional CFLAGS.\n\n * \"oidtree\" tests were rewritten to use the unit test framework.\n\n * The structure of the document that records longer-term project\n   decisions to deprecate/remove/update various behaviour has been\n   outlined.\n\n * The pseudo-merge reachability bitmap to help more efficient storage\n   of the reachability bitmap in a repository with too many refs has\n   been added.\n\n * When \"git merge\" sees that the index cannot be refreshed (e.g. due\n   to another process doing the same in the background), it died but\n   after writing MERGE_HEAD etc. files, which was useless for the\n   purpose to recover from the failure.\n\n * The output from \"git cat-file --batch-check\" and \"--batch-command\n   (info)\" should not be unbuffered, for which some tests have been\n   added.\n\n * A CPP macro USE_THE_REPOSITORY_VARIABLE is introduced to help\n   transition the codebase to rely less on the availability of the\n   singleton the_repository instance.\n\n * \"git version --build-options\" reports the version information of\n   OpenSSL and other libraries (if used) in the build.\n\n * Memory ownership rules for the in-core representation of\n   remote.*.url configuration values have been straightened out, which\n   resulted in a few leak fixes and code clarification.\n\n * When bundleURI interface fetches multiple bundles, Git failed to\n   take full advantage of all bundles and ended up slurping duplicated\n   objects, which has been corrected.\n\n * The code to deal with modified paths that are out-of-cone in a\n   sparsely checked out working tree has been optimized.\n\n * An existing test of oidmap API has been rewritten with the\n   unit-test framework.\n\n * The \"ort\" merge backend saw one bugfix for a crash that happens\n   when inner merge gets killed, and assorted code clean-ups.\n\n * A new warning message is issued when a command has to expand a\n   sparse index to handle working tree cruft that are outside of the\n   sparse checkout.\n\n * The test framework learned to take the test body not as a single\n   string but as a here-document.\n\n * \"git push '' HEAD:there\" used to hit a BUG(); it has been corrected\n   to die with \"fatal: bad repository ''\".\n\n * What happens when http.cookieFile gets the special value \"\" has\n   been clarified in the documentation.\n\n\nFixes since v2.45\n-----------------\n\n * \"git rebase --signoff\" used to forget that it needs to add a\n   sign-off to the resulting commit when told to continue after a\n   conflict stops its operation.\n\n * The procedure to build multi-pack-index got confused by the\n   replace-refs mechanism, which has been corrected by disabling the\n   latter.\n\n * The \"-k\" and \"--rfc\" options of \"format-patch\" will now error out\n   when used together, as one tells us not to add anything to the\n   title of the commit, and the other one tells us to add \"RFC\" in\n   addition to \"PATCH\".\n\n * \"git stash -S\" did not handle binary files correctly, which has\n   been corrected.\n\n * A scheduled \"git maintenance\" job is expected to work on all\n   repositories it knows about, but it stopped at the first one that\n   errored out.  Now it keeps going.\n\n * zsh can pretend to be a normal shell pretty well except for some\n   glitches that we tickle in some of our scripts. Work them around\n   so that \"vimdiff\" and our test suite works well enough with it.\n\n * Command line completion support for zsh (in contrib/) has been\n   updated to stop exposing internal state to end-user shell\n   interaction.\n\n * Tests that try to corrupt in-repository files in chunked format did\n   not work well on macOS due to its broken \"mv\", which has been\n   worked around.\n\n * The maximum size of attribute files is enforced more consistently.\n\n * Unbreak CI jobs so that we do not attempt to use Python 2 that has\n   been removed from the platform.\n\n * Git 2.43 started using the tree of HEAD as the source of attributes\n   in a bare repository, which has severe performance implications.\n   For now, revert the change, without ripping out a more explicit\n   support for the attr.tree configuration variable.\n\n * The \"--exit-code\" option of \"git diff\" command learned to work with\n   the \"--ext-diff\" option.\n\n * Windows CI running in GitHub Actions started complaining about the\n   order of arguments given to calloc(); the imported regex code uses\n   the wrong order almost consistently, which has been corrected.\n\n * Expose \"name conflict\" error when a ref creation fails due to D/F\n   conflict in the ref namespace, to improve an error message given by\n   \"git fetch\".\n   (merge 9339fca23e it/refs-name-conflict later to maint).\n\n * The SubmittingPatches document now refers folks to manpages\n   translation project.\n\n * The documentation for \"git diff --name-only\" has been clarified\n   that it is about showing the names in the post-image tree.\n\n * The credential helper that talks with osx keychain learned to avoid\n   storing back the authentication material it just got received from\n   the keychain.\n   (merge e1ab45b2da kn/osxkeychain-skip-idempotent-store later to maint).\n\n * The chainlint script (invoked during \"make test\") did nothing when\n   it failed to detect the number of available CPUs.  It now falls\n   back to 1 CPU to avoid the problem.\n\n * Revert overly aggressive \"layered defence\" that went into 2.45.1\n   and friends, which broke \"git-lfs\", \"git-annex\", and other use\n   cases, so that we can rebuild necessary counterparts in the open.\n\n * \"git init\" in an already created directory, when the user\n   configuration has includeif.onbranch, started to fail recently,\n   which has been corrected.\n\n * Memory leaks in \"git mv\" has been plugged.\n\n * The safe.directory configuration knob has been updated to\n   optionally allow leading path matches.\n\n * An overly large \".gitignore\" files are now rejected silently.\n\n * Upon expiration event, the credential subsystem forgot to clear\n   in-core authentication material other than password (whose support\n   was added recently), which has been corrected.\n\n * Fix for an embarrassing typo that prevented Python2 tests from running\n   anywhere.\n\n * Varargs functions that are unannotated as printf-like or execl-like\n   have been annotated as such.\n\n * \"git am\" has a safety feature to prevent it from starting a new\n   session when there already is a session going.  It reliably\n   triggers when a mbox is given on the command line, but it has to\n   rely on the tty-ness of the standard input.  Add an explicit way to\n   opt out of this safety with a command line option.\n   (merge 62c71ace44 jk/am-retry later to maint).\n\n * A leak in \"git imap-send\" that somehow escapes LSan has been\n   plugged.\n\n * Setting core.abbrev too early before the repository set-up\n   (typically in \"git clone\") caused segfault, which as been\n   corrected.\n\n * When the user adds to \"git rebase -i\" instruction to \"pick\" a merge\n   commit, the error experience is not pleasant.  Such an error is now\n   caught earlier in the process that parses the todo list.\n\n * We forgot to normalize the result of getcwd() to NFC on macOS where\n   all other paths are normalized, which has been corrected.  This still\n   does not address the case where core.precomposeUnicode configuration\n   is not defined globally.\n\n * Earlier we stopped using the tree of HEAD as the default source of\n   attributes in a bare repository, but failed to document it.  This\n   has been corrected.\n\n * \"git update-server-info\" and \"git commit-graph --write\" have been\n   updated to use the tempfile API to avoid leaving cruft after\n   failing.\n\n * An unused extern declaration for mingw has been removed to prevent\n   it from causing build failure.\n\n * A helper function shared between two tests had a copy-paste bug,\n   which has been corrected.\n\n * \"git fetch-pack -k -k\" without passing \"--lock-pack\" (which we\n   never do ourselves) did not work at all, which has been corrected.\n\n * CI job to build minimum fuzzers learned to pass NO_CURL=NoThanks to\n   the build procedure, as its build environment does not offer, or\n   the rest of the build needs, anything cURL.\n   (merge 4e66b5a990 jc/fuzz-sans-curl later to maint).\n\n * \"git diff --no-ext-diff\" when diff.external is configured ignored\n   the \"--color-moved\" option.\n   (merge 0f4b0d4cf0 rs/diff-color-moved-w-no-ext-diff-fix later to maint).\n\n * \"git archive --add-virtual-file=<path>:<contents>\" never paid\n   attention to the --prefix=<prefix> option but the documentation\n   said it would. The documentation has been corrected.\n   (merge 72c282098d jc/archive-prefix-with-add-virtual-file later to maint).\n\n * When GIT_PAGER failed to spawn, depending on the code path taken,\n   we failed immediately (correct) or just spew the payload to the\n   standard output (incorrect).  The code now always fail immediately\n   when GIT_PAGER fails.\n   (merge 78f0a5d187 rj/pager-die-upon-exec-failure later to maint).\n\n * date parser updates to be more careful about underflowing epoch\n   based timestamp.\n   (merge 9d69789770 db/date-underflow-fix later to maint).\n\n * The Bloom filter used for path limited history traversal was broken\n   on systems whose \"char\" is unsigned; update the implementation and\n   bump the format version to 2.\n   (merge 9c8a9ec787 tb/path-filter-fix later to maint).\n\n * Typofix.\n   (merge 231cf7370e as/pathspec-h-typofix later to maint).\n\n * Code clean-up.\n   (merge 4b837f821e rs/simplify-submodule-helper-super-prefix-invocation later to maint).\n\n * \"git describe --dirty --broken\" forgot to refresh the index before\n   seeing if there is any chang, (\"git describe --dirty\" correctly did\n   so), which has been corrected.\n   (merge b8ae42e292 as/describe-broken-refresh-index-fix later to maint).\n\n * Test suite has been taught not to unnecessarily rely on DNS failing\n   a bogus external name.\n   (merge 407cdbd271 jk/tests-without-dns later to maint).\n\n * GitWeb update to use committer date consistently in rss/atom feeds.\n   (merge cf6ead095b am/gitweb-feed-use-committer-date later to maint).\n\n * Custom control structures we invented more recently have been\n   taught to the clang-format file.\n   (merge 1457dff9be rs/clang-format-updates later to maint).\n\n * Developer build procedure fix.\n   (merge df32729866 tb/dev-build-pedantic-fix later to maint).\n\n * \"git push\" that pushes only deletion gave an unnecessary and\n   harmless error message when push negotiation is configured, which\n   has been corrected.\n   (merge 4d8ee0317f jc/disable-push-nego-for-deletion later to maint).\n\n * Address-looking strings found on the trailer are now placed on the\n   Cc: list after running through sanitize_address by \"git send-email\".\n   (merge c852531f45 cb/send-email-sanitize-trailer-addresses later to maint).\n\n * Tests that use GIT_TEST_SANITIZE_LEAK_LOG feature got their exit\n   status inverted, which has been corrected.\n   (merge 8c1d6691bc rj/test-sanitize-leak-log-fix later to maint).\n\n * The http.cookieFile and http.saveCookies configuration variables\n   have a few values that need to be avoided, which are now ignored\n   with warning messages.\n   (merge 4f5822076f jc/http-cookiefile later to maint).\n\n * Repacking a repository with multi-pack index started making stupid\n   pack selections in Git 2.45, which has been corrected.\n   (merge 8fb6d11fad ds/midx-write-repack-fix later to maint).\n\n * Fix documentation mark-up regression in 2.45.\n   (merge 6474da0aa4 ja/doc-markup-updates-fix later to maint).\n\n * Work around asciidoctor's css that renders `monospace` material\n   in the SYNOPSIS section of manual pages as block elements.\n   (merge d44ce6ddd5 js/doc-markup-updates-fix later to maint).\n\n * Other code cleanup, docfix, build fix, etc.\n   (merge 493fdae046 ew/object-convert-leakfix later to maint).\n   (merge 00f3661a0a ss/doc-eol-attr-fix later to maint).\n   (merge 428c40da61 ri/doc-show-branch-fix later to maint).\n   (merge 58696bfcaa jc/where-is-bash-for-ci later to maint).\n   (merge 616e94ca24 tb/doc-max-tree-depth-fix later to maint).\n\n----------------------------------------------------------------\n\nChanges since v2.45.0 are as follows:\n\nAaron Plattner (1):\n      credential: clear expired c->credential, unify secret clearing\n\nAbhijeet Sonar (2):\n      describe: refresh the index when 'broken' flag is used\n      pathspec: fix typo \"glossary-context.txt\" -> \"glossary-content.txt\"\n\nAdam Johnson (1):\n      stash: fix \"--staged\" with binary files\n\nAlexander Shopov (1):\n      l10n: bg.po: Updated Bulgarian translation (5734t)\n\nArkadii Yakovets (1):\n      l10n: uk: v2.46 update\n\nBagas Sanjaya (1):\n      l10n: po-id for 2.46\n\nBeat Bolli (3):\n      t/t4026-color: remove an extra double quote character\n      t/t4026-color: add test coverage for invalid RGB colors\n      color: add support for 12-bit RGB colors\n\nChandra Pratap (16):\n      t: move reftable/basics_test.c to the unit testing framework\n      t: move tests from reftable/stack_test.c to the new unit test\n      t: move tests from reftable/record_test.c to the new unit test\n      t: add test for put_be16()\n      t: improve the test-case for parse_names()\n      t: move reftable/record_test.c to the unit testing framework\n      t-reftable-record: add reftable_record_cmp() tests for log records\n      t-reftable-record: add comparison tests for ref records\n      t-reftable-record: add comparison tests for index records\n      t-reftable-record: add comparison tests for obj records\n      t-reftable-record: add ref tests for reftable_record_is_deletion()\n      t-reftable-record: add log tests for reftable_record_is_deletion()\n      t-reftable-record: add obj tests for reftable_record_is_deletion()\n      t-reftable-record: add index tests for reftable_record_is_deletion()\n      t-reftable-record: add tests for reftable_ref_record_compare_name()\n      t-reftable-record: add tests for reftable_log_record_compare_key()\n\nChristian Hesse (1):\n      refs: correct the version numbers in a comment\n\nCsókás, Bence (1):\n      git-send-email: use sanitized address when reading mbox body\n\nD. Ben Knoble (1):\n      completion: zsh: stop leaking local cache variable\n\nDarcy Burke (1):\n      date: detect underflow/overflow when parsing dates with timezone offset\n\nDerrick Stolee (10):\n      scalar: avoid segfault in reconfigure --all\n      commit-graph: increment progress indicator\n      sparse-checkout: refactor skip worktree retry logic\n      sparse-index: refactor path_found()\n      sparse-index: use strbuf in path_found()\n      sparse-index: count lstat() calls\n      sparse-index: improve lstat caching of sparse paths\n      advice: warn when sparse index expands\n      t5319: add failing test case for repack/expire\n      midx-write: revert use of --stdin-packs\n\nDov Murik (1):\n      documentation: git-update-index: add --show-index-version to synopsis\n\nDr. David Alan Gilbert (1):\n      fetch-pack: remove unused 'struct loose_object_iter'\n\nDragan Simic (3):\n      send-email: move newline characters out of a few translatable strings\n      format-patch: ensure that --rfc and -k are mutually exclusive\n      doc: interactive.singleKey is disabled by default\n\nElijah Newren (8):\n      merge-ort: extract handling of priv member into reusable function\n      merge-ort: maintain expected invariant for priv member\n      merge-ort: fix type of local 'clean' var in handle_content_merge ()\n      merge-ort: clearer propagation of failure-to-function from merge_submodule\n      merge-ort: loosen commented requirements\n      merge-ort: upon merge abort, only show messages causing the abort\n      merge-ort: convert more error() cases to path_msg()\n      merge-ort: fix missing early return\n\nEmir SARI (1):\n      l10n: tr: Update Turkish translations\n\nEric Sunshine (3):\n      chainlint.pl: make CPU count computation more robust\n      chainlint.pl: latch CPU count directly reported by /proc/cpuinfo\n      chainlint.pl: recognize test bodies defined via heredoc\n\nEric Wong (3):\n      Git.pm: use array in command_bidi_pipe example\n      t1006: ensure cat-file info isn't buffered by default\n      object-file: fix leak on conversion failure\n\nFahad Alrashed (1):\n      git-p4: show Perforce error to the user\n\nFilip Hejsek (4):\n      t0411: add tests for cloning from partial repo\n      has_dir_name(): do not get confused by characters < '/'\n      t7423: add tests for symlinked submodule directories\n      clone: prevent clashing git dirs when cloning submodule in parallel\n\nGhanshyam Thakkar (6):\n      t/: port helper/test-strcmp-offset.c to unit-tests/t-strcmp-offset.c\n      t/: migrate helper/test-example-decorate to the unit testing framework\n      strbuf: introduce strbuf_addstrings() to repeatedly add a string\n      t/: migrate helper/test-{sha1, sha256} to unit-tests/t-hash\n      t/: migrate helper/test-oidtree.c to unit-tests/t-oidtree.c\n      t: migrate helper/test-oidmap.c to unit-tests/t-oidmap.c\n\nIan Wienand (3):\n      Documentation: alias: rework notes into points\n      Documentation: alias: add notes on shell expansion\n      run-command: show prepared command\n\nIvan Tse (1):\n      refs: return conflict error when checking packed refs\n\nJames Liu (3):\n      doc: clean up usage documentation for --no-* opts\n      doc: add spacing around paginate options\n      advice: add --no-advice global option\n\nJean-Noël Avila (2):\n      l10n: fr: v2.46.0\n      doc: git-clone fix discrepancy between asciidoc and asciidoctor\n\nJeff King (65):\n      http: reset POSTFIELDSIZE when clearing curl handle\n      INSTALL: bump libcurl version to 7.21.3\n      remote-curl: add Transfer-Encoding header only for older curl\n      test-lib: ignore uninteresting LSan output\n      upload-pack: disable lazy-fetching by default\n      docs: document security issues around untrusted .git dirs\n      t/Makefile: run unit tests alongside shell tests\n      ci: update coverity runs_on_pool reference\n      ci: drop mention of BREW_INSTALL_PACKAGES variable\n      ci: avoid bare \"gcc\" for osx-gcc job\n      ci: stop installing \"gcc-13\" for osx-gcc\n      send-email: drop FakeTerm hack\n      send-email: avoid creating more than one Term::ReadLine object\n      ci: drop mention of BREW_INSTALL_PACKAGES variable\n      ci: avoid bare \"gcc\" for osx-gcc job\n      ci: stop installing \"gcc-13\" for osx-gcc\n      t-strvec: use va_end() to match va_start()\n      t-strvec: mark variable-arg helper with LAST_ARG_MUST_BE_NULL\n      mv: move src_dir cleanup to end of cmd_mv()\n      mv: factor out empty src_dir removal\n      mv: replace src_dir with a strvec\n      dir.c: skip .gitignore, etc larger than INT_MAX\n      sparse-checkout: free string list in write_cone_to_file()\n      sparse-checkout: pass string literals directly to add_pattern()\n      dir.c: free strings in sparse cone pattern hashmaps\n      sparse-checkout: clear patterns when init() sees existing sparse file\n      dir.c: free removed sparse-pattern hashmap entries\n      dir.c: reduce max pattern file size to 100MB\n      dir.c: always copy input to add_pattern()\n      sparse-checkout: reuse --stdin buffer when reading patterns\n      sparse-checkout: always free \"line\" strbuf after reading input\n      sparse-checkout: refactor temporary sparse_checkout_patterns\n      sparse-checkout: free sparse_filename after use\n      sparse-checkout: free pattern list in sparse_checkout_list()\n      sparse-checkout: free string list after displaying\n      sparse-checkout: free duplicate hashmap entries\n      am: add explicit \"--retry\" option\n      test-terminal: drop stdin handling\n      imap-send: free all_msgs strbuf in \"out\" label\n      archive: fix check for missing url\n      remote: refactor alias_url() memory ownership\n      remote: transfer ownership of memory in add_url(), etc\n      remote: use strvecs to store remote url/pushurl\n      remote: simplify url/pushurl selection\n      config: document remote.*.url/pushurl interaction\n      remote: allow resetting url list\n      t5801: make remote-testgit GIT_DIR setup more robust\n      t5801: test remote.*.vcs config\n      remote: always require at least one url in a remote\n      remote: drop checks for zero-url case\n      fetch-pack: fix segfault when fscking without --lock-pack\n      t5500: fix mistaken $SERVER reference in helper function\n      t5553: use local url for invalid fetch\n      t5551: do not confirm that bogus url cannot be used\n      t/lib-bundle-uri: use local fake bundle URLs\n      chainlint.pl: add test_expect_success call to test snippets\n      chainlint.pl: only start threads if jobs > 1\n      chainlint.pl: do not spawn more threads than we have scripts\n      chainlint.pl: force CRLF conversion when opening input files\n      chainlint.pl: check line numbers in expected output\n      chainlint.pl: add tests for test body in heredoc\n      test-lib: allow test snippets as here-docs\n      t: convert some here-doc test bodies\n      t/.gitattributes: ignore whitespace in chainlint expect files\n      t4153: stop redirecting input from /dev/zero\n\nJesús Ariel Cabello Mateos (1):\n      gitweb: rss/atom change published/updated date to committer date\n\nJohannes Schindelin (45):\n      repository: avoid leaking `fsmonitor` data\n      ci: upgrade to using macos-13\n      ci(linux-asan/linux-ubsan): let's save some time\n      ci: bump remaining outdated Actions versions\n      ci(linux32): add a note about Actions that must not be updated\n      fetch/clone: detect dubious ownership of local repositories\n      submodules: submodule paths must not contain symlinks\n      clone_submodule: avoid using `access()` on directories\n      submodule: require the submodule path to contain directories only\n      t5510: verify that D/F confusion cannot lead to an RCE\n      entry: report more colliding paths\n      clone: when symbolic links collide with directories, keep the latter\n      find_hook(): refactor the `STRIP_EXTENSION` logic\n      init: refactor the template directory discovery into its own function\n      Add a helper function to compare file contents\n      clone: prevent hooks from running during a clone\n      init.templateDir: consider this config setting protected\n      core.hooksPath: add some protection while cloning\n      fsck: warn about symlink pointing inside a gitdir\n      Git 2.39.4\n      Git 2.40.2\n      Git 2.41.1\n      Git 2.42.2\n      Git 2.43.4\n      Git 2.44.1\n      for-each-repo: optionally keep going on an error\n      maintenance: running maintenance should not stop on errors\n      Git 2.45.1\n      cmake: let `test-tool` run the unit tests, too\n      hook: plug a new memory leak\n      init: use the correct path of the templates directory again\n      Revert \"core.hooksPath: add some protection while cloning\"\n      tests: verify that `clone -c core.hooksPath=/dev/null` works again\n      clone: drop the protections where hooks aren't run\n      Revert \"Add a helper function to compare file contents\"\n      mingw: drop bogus (and unneeded) declaration of `_pgmptr`\n      cmake: fix build of `t-oidtree`\n      run-command: refactor getting the Unix shell path into its own function\n      strvec: declare the `strvec_push_nodup()` function globally\n      win32: override `fspathcmp()` with a directory separator-aware version\n      mingw(is_msys2_sh): handle forward slashes in the `sh.exe` path, too\n      run-command(win32): resolve the path to the Unix shell early\n      run-command: declare the `git_shell_path()` function globally\n      var(win32): do report the GIT_SHELL_PATH that is actually used\n      asciidoctor: fix `synopsis` rendering\n\nJohannes Sixt (1):\n      git-gui: note the new maintainer\n\nJohn Passaro (3):\n      builtin/commit: use ARGV macro to collect trailers\n      builtin/commit: refactor --trailer logic\n      builtin/tag: add --trailer option\n\nJohn Paul Adrian Glaubitz (1):\n      chainlint.pl: fix incorrect CPU count on Linux SPARC\n\nJonathan Tan (1):\n      gitformat-commit-graph: describe version 2 of BDAT\n\nJosh Soref (2):\n      doc: update links to current pages\n      doc: switch links to https\n\nJosh Steadmon (8):\n      fuzz: link fuzz programs with `make all` on Linux\n      t0080: turn t-basic unit test into a helper\n      test-tool run-command testsuite: get shell from env\n      test-tool run-command testsuite: remove hardcoded filter\n      test-tool run-command testsuite: support unit tests\n      unit tests: add rule for running with test-tool\n      ci: use test-tool as unit test runner on Windows\n      doc: describe the project's decision-making process\n\nJunio C Hamano (75):\n      GitHub Actions: update to checkout@v4\n      GitHub Actions: update to github-script@v7\n      format-patch: allow --rfc to optionally take a value, like --rfc=WIP\n      format-patch: \"--rfc=-(WIP)\" appends to produce [PATCH (WIP)]\n      Start the 2.46 cycle\n      rev-parse: document how --is-* options work outside a repository\n      t/lib-chunk: work around broken \"mv\" on some vintage of macOS\n      stop using HEAD for attributes in bare repository by default\n      Makefile(s): do not enforce \"all indents must be done with tab\"\n      format-patch: run range-diff with larger creation-factor\n      t0018: two small fixes\n      The second batch\n      SubmittingPatches: move the patch-flow section earlier\n      SubmittingPatches: extend the \"flow\" section\n      SubmittingPatches: welcome the new maintainer of git-gui part\n      compat/regex: fix argument order to calloc(3)\n      The third batch\n      The fourth batch\n      Revert \"diff: fix --exit-code with external diff\"\n      The fifth batch\n      t0017: clarify dubious test set-up\n      SubmittingPatches: advertise git-manpages-l10n project a bit\n      diff: document what --name-only shows\n      The sixth batch\n      setup: add an escape hatch for \"no more default hash algorithm\" change\n      t1517: test commands that are designed to be run outside repository\n      apply: fix uninitialized hash function\n      add-patch: enforce only one-letter response to prompts\n      Revert \"fsck: warn about symlink pointing inside a gitdir\"\n      The seventh batch\n      show_log: factor out interdiff/range-diff generation\n      format-patch: move range/inter diff at the end of a single patch output\n      The eighth batch\n      safe.directory: allow \"lead/ing/path/*\" match\n      The ninth batch\n      Git 2.39.5\n      t1517: more coverage for commands that work without repository\n      Post 2.45.2 updates\n      The tenth batch\n      imap-send: minimum leakfix\n      refs: call branches branches\n      ls-remote: introduce --branches and deprecate --heads\n      show-ref: introduce --branches and deprecate --heads\n      attr.tree: HEAD:.gitattributes is no longer the default in a bare repo\n      add-i: finally retire add.interactive.useBuiltin\n      The eleventh batch\n      worktree_git_path(): move the declaration to path.h\n      __attribute__: trace2_region_enter_printf() is like \"printf\"\n      __attribute__: remove redundant attribute declaration for git_die_config()\n      __attribute__: mark some functions with LAST_ARG_MUST_BE_NULL\n      __attribute__: add a few missing format attributes\n      The twelfth batch\n      The thirteenth batch\n      The fourteenth batch\n      The fifteenth batch\n      fuzz: minimum fuzzers environment lacks libcURL\n      The sixteenth batch\n      t0006: simplify prerequisites\n      archive: document that --add-virtual-file takes full path\n      The seventeenth batch\n      More post 2.45.2 updates from the 'master' front\n      Yet another batch of post 2.45.2 updates from the 'master' front\n      The eighteenth batch\n      push: avoid showing false negotiation errors\n      The ninteenth batch\n      ci: unify bash calling convention\n      http.c: cookie file tightening\n      Git 2.46-rc0\n      Post 2.46-rc0 batch #1\n      Post 2.46-rc0 batch #2\n      Post 2.46-rc0 batch #3\n      Git 2.46-rc1\n      Doc: fix Asciidoctor css workaround\n      Git 2.46-rc2\n      Git 2.46\n\nJustin Tobler (6):\n      doc: clarify practices for submitting updated patch versions\n      ci: pre-collapse GitLab CI sections\n      github-ci: fix link to whitespace error\n      ci: separate whitespace check script\n      ci: make the whitespace report optional\n      gitlab-ci: add whitespace error check\n\nKarthik Nayak (17):\n      refs: accept symref values in `ref_transaction_update()`\n      files-backend: extract out `create_symref_lock()`\n      refs: support symrefs in 'reference-transaction' hook\n      refs: move `original_update_refname` to 'refs.c'\n      refs: add support for transactional symref updates\n      refs: use transaction in `refs_create_symref()`\n      refs: rename `refs_create_symref()` to `refs_update_symref()`\n      refs: remove `create_symref` and associated dead code\n      SubmittingPatches: add section for iterating patches\n      refs: create and use `ref_update_expects_existing_old_ref()`\n      refs: specify error for regular refs with `old_target`\n      update-ref: add support for 'symref-verify' command\n      update-ref: add support for 'symref-delete' command\n      update-ref: add support for 'symref-create' command\n      reftable: pick either 'oid' or 'target' for new updates\n      update-ref: add support for 'symref-update' command\n      builtin/push: call set_refspecs after validating remote\n\nKoji Nakamaru (2):\n      osxkeychain: exclusive lock to serialize execution of operations\n      osxkeychain: state to skip unnecessary store operations\n\nKyle Lippincott (1):\n      attr: fix msan issue in read_attr_from_index\n\nKyle Zhao (1):\n      merge: avoid write merge state when unable to write index\n\nLinus Arver (18):\n      MyFirstContribution: mention contrib/contacts/git-contacts\n      SubmittingPatches: clarify 'git-contacts' location\n      SubmittingPatches: mention GitGitGadget\n      SubmittingPatches: quote commands\n      SubmittingPatches: discuss reviewers first\n      SubmittingPatches: dedupe discussion of security patches\n      SubmittingPatches: add heading for format-patch and send-email\n      SubmittingPatches: demonstrate using git-contacts with git-send-email\n      Makefile: sort UNIT_TEST_PROGRAMS\n      trailer: add unit tests for trailer iterator\n      trailer: teach iterator about non-trailer lines\n      sequencer: use the trailer iterator\n      interpret-trailers: access trailer_info with new helpers\n      trailer: make parse_trailers() return trailer_info pointer\n      trailer: make trailer_info struct private\n      trailer: retire trailer_info_get() from API\n      trailer: document parse_trailers() usage\n      trailer unit tests: inspect iterator contents\n\nMarcel Telka (9):\n      t/t0211-trace2-perf.sh: fix typo patern -> pattern\n      Switch grep from non-portable BRE to portable ERE\n      t/t9902-completion.sh: backslashes in echo\n      t/t0600-reffiles-backend.sh: rm -v is not portable\n      t/t4202-log.sh: fix misspelled variable\n      t/t1700-split-index.sh: mv -v is not portable\n      t/t9118-git-svn-funky-branch-names.sh: sed needs semicolon\n      t/t9001-send-email.sh: sed - remove the i flag for s\n      scalar: make enlistment delete to work on all POSIX platforms\n\nMartin Ågren (2):\n      Documentation/gitpacking: make sample configs listing blocks\n      Documentation/glossary: fix double word\n\nMike Hommey (1):\n      win32: fix building with NO_UNIX_SOCKETS\n\nOrgad Shaneh (1):\n      git-gui: fix inability to quit after closing another instance\n\nPatrick Steinhardt (267):\n      refs/reftable: fix D/F conflict error message on ref copy\n      refs/reftable: perform explicit D/F check when writing symrefs\n      refs/reftable: skip duplicate name checks\n      reftable: remove name checks\n      refs/reftable: don't recompute committer ident\n      reftable/writer: refactorings for `writer_add_record()`\n      reftable/writer: refactorings for `writer_flush_nonempty_block()`\n      reftable/writer: unify releasing memory\n      reftable/writer: reset `last_key` instead of releasing it\n      reftable/block: reuse zstream when writing log blocks\n      reftable/block: reuse compressed array\n      ci: rename \"runs_on_pool\" to \"distro\"\n      ci: expose distro name in dockerized GitHub jobs\n      ci: skip sudo when we are already root\n      ci: drop duplicate package installation for \"linux-gcc-default\"\n      ci: convert \"install-dependencies.sh\" to use \"/bin/sh\"\n      ci: merge custom PATH directories\n      ci: fix setup of custom path for GitLab CI\n      ci: merge scripts which install dependencies\n      ci: make Perforce binaries executable for all users\n      ci: install JGit dependency\n      t06xx: always execute backend-specific tests\n      t0610: fix non-portable variable assignment\n      t0612: add tests to exercise Git/JGit reftable compatibility\n      builtin/clone: stop resolving symlinks when copying files\n      builtin/clone: abort when hardlinked source and target file differ\n      setup.c: introduce `die_upon_dubious_ownership()`\n      builtin/clone: refuse local clones of unsafe repositories\n      t/helper: stop using `the_index`\n      builtin: stop using `the_index`\n      repository: initialize index in `repo_init()`\n      builtin/clone: stop using `the_index`\n      repository: drop `the_index` variable\n      repository: drop `initialize_the_repository()`\n      config: clarify memory ownership when preparing comment strings\n      builtin/config: move option array around\n      builtin/config: move \"fixed-value\" option to correct group\n      builtin/config: use `OPT_CMDMODE()` to specify modes\n      builtin/config: pull out function to handle config location\n      builtin/config: pull out function to handle `--null`\n      builtin/config: introduce \"list\" subcommand\n      builtin/config: introduce \"get\" subcommand\n      builtin/config: introduce \"set\" subcommand\n      builtin/config: introduce \"unset\" subcommand\n      builtin/config: introduce \"rename-section\" subcommand\n      builtin/config: introduce \"remove-section\" subcommand\n      builtin/config: introduce \"edit\" subcommand\n      builtin/config: display subcommand help\n      gitlab-ci: add smoke test for fuzzers\n      ci: fix Python dependency on Ubuntu 24.04\n      path: harden validation of HEAD with non-standard hashes\n      path: move `validate_headref()` to its only user\n      parse-options-cb: only abbreviate hashes when hash algo is known\n      attr: don't recompute default attribute source\n      attr: fix BUG() when parsing attrs outside of repo\n      remote-curl: fix parsing of detached SHA256 heads\n      builtin/rev-parse: allow shortening to more than 40 hex characters\n      builtin/blame: don't access potentially unitialized `the_hash_algo`\n      builtin/bundle: abort \"verify\" early when there is no repository\n      builtin/diff: explicitly set hash algo when there is no repo\n      builtin/shortlog: don't set up revisions without repo\n      oss-fuzz/commit-graph: set up hash algorithm\n      repository: stop setting SHA1 as the default object hash\n      refs: introduce missing functions that accept a `struct ref_store`\n      refs: add `exclude_patterns` parameter to `for_each_fullref_in()`\n      cocci: introduce rules to transform \"refs\" to pass ref store\n      cocci: apply rules to rewrite callers of \"refs\" interfaces\n      refs: remove functions without ref store\n      gitlab-ci: fix installing dependencies for fuzz smoke tests\n      reftable: consistently refer to `reftable_write_options` as `opts`\n      reftable: pass opts as constant pointer\n      reftable/writer: drop static variable used to initialize strbuf\n      reftable/writer: improve error when passed an invalid block size\n      reftable/dump: support dumping a table's block structure\n      refs/reftable: allow configuring block size\n      reftable: use `uint16_t` to track restart interval\n      refs/reftable: allow configuring restart interval\n      refs/reftable: allow disabling writing the object index\n      reftable: make the compaction factor configurable\n      refs/reftable: allow configuring geometric factor\n      reftable/block: use `size_t` to track restart point index\n      reftable/reader: avoid copying index iterator\n      reftable/reader: unify indexed and linear seeking\n      reftable/reader: separate concerns of table iter and reftable reader\n      reftable/reader: inline `reader_seek_internal()`\n      reftable/reader: set up the reader when initializing table iterator\n      reftable/merged: split up initialization and seeking of records\n      reftable/merged: simplify indices for subiterators\n      reftable/generic: move seeking of records into the iterator\n      reftable/generic: adapt interface to allow reuse of iterators\n      reftable/reader: adapt interface to allow reuse of iterators\n      reftable/stack: provide convenience functions to create iterators\n      reftable/merged: adapt interface to allow reuse of iterators\n      builtin/config: stop printing full usage on misuse\n      builtin/config: move legacy mode into its own function\n      builtin/config: move subcommand options into `cmd_config()`\n      builtin/config: move legacy options into `cmd_config()`\n      builtin/config: move actions into `cmd_config_actions()`\n      builtin/config: check for writeability after source is set up\n      config: make the config source const\n      builtin/config: refactor functions to have common exit paths\n      builtin/config: move location options into local variables\n      builtin/config: move display options into local variables\n      builtin/config: move type options into display options\n      builtin/config: move default value into display options\n      builtin/config: move `respect_includes_opt` into location options\n      builtin/config: convert `do_not_match` to a local variable\n      builtin/config: convert `value_pattern` to a local variable\n      builtin/config: convert `regexp` to a local variable\n      builtin/config: convert `key_regexp` to a local variable\n      builtin/config: convert `key` to a local variable\n      builtin/config: track \"fixed value\" option via flags only\n      builtin/config: convert flags to a local variable\n      builtin/config: pass data between callbacks via local variables\n      Documentation/glossary: redefine pseudorefs as special refs\n      Documentation/glossary: clarify limitations of pseudorefs\n      Documentation/glossary: define root refs as refs\n      refs: rename `is_pseudoref()` to `is_root_ref()`\n      refs: rename `is_special_ref()` to `is_pseudo_ref()`\n      refs: do not check ref existence in `is_root_ref()`\n      refs: classify HEAD as a root ref\n      refs: pseudorefs are no refs\n      ref-filter: properly distinuish pseudo and root refs\n      refs: refuse to write pseudorefs\n      completion: adapt git-config(1) to complete subcommands\n      refs: adjust names for `init` and `init_db` callbacks\n      refs: rename `init_db` callback to avoid confusion\n      refs: implement releasing ref storages\n      refs: track ref stores via strmap\n      refs: pass repo when retrieving submodule ref store\n      refs: refactor `resolve_gitlink_ref()` to accept a repository\n      refs: retrieve worktree ref stores via associated repository\n      refs: convert iteration over replace refs to accept ref store\n      refs: pass ref store when detecting dangling symrefs\n      refs: move object peeling into \"object.c\"\n      refs: pass repo when peeling objects\n      refs: drop `git_default_branch_name()`\n      refs: remove `dwim_log()`\n      refs/files: use correct repository\n      refs/files: remove references to `the_hash_algo`\n      refs/packed: remove references to `the_hash_algo`\n      builtin/patch-id: fix uninitialized hash function\n      builtin/hash-object: fix uninitialized hash function\n      setup: fix bug with \"includeIf.onbranch\" when initializing dir\n      ci: add missing dependency for TTY prereq\n      transport-helper: fix leaking helper name\n      t: mark a bunch of tests as leak-free\n      strbuf: fix leak when `appendwholeline()` fails with EOF\n      checkout: clarify memory ownership in `unique_tracking_name()`\n      http: refactor code to clarify memory ownership\n      config: clarify memory ownership in `git_config_pathname()`\n      diff: refactor code to clarify memory ownership of prefixes\n      convert: refactor code to clarify ownership of check_roundtrip_encoding\n      builtin/log: stop using globals for log config\n      builtin/log: stop using globals for format config\n      config: clarify memory ownership in `git_config_string()`\n      config: plug various memory leaks\n      builtin/credential: clear credential before exit\n      commit-reach: fix memory leak in `ahead_behind()`\n      submodule: fix leaking memory for submodule entries\n      strvec: add functions to replace and remove strings\n      builtin/mv: refactor `add_slash()` to always return allocated strings\n      builtin/mv duplicate string list memory\n      builtin/mv: refactor to use `struct strvec`\n      builtin/mv: fix leaks for submodule gitfile paths\n      Makefile: extract script to lint missing/extraneous manpages\n      Documentation/lint-manpages: bubble up errors\n      gitlab-ci: add job to run `make check-docs`\n      ci/test-documentation: work around SyntaxWarning in Python 3.12\n      setup: unset ref storage when reinitializing repository version\n      refs: convert ref storage format to an enum\n      refs: pass storage format to `ref_store_init()` explicitly\n      refs: allow to skip creation of reflog entries\n      refs/files: refactor `add_pseudoref_and_head_entries()`\n      refs/files: extract function to iterate through root refs\n      refs/files: fix NULL pointer deref when releasing ref store\n      reftable: inline `merged_table_release()`\n      worktree: don't store main worktree twice\n      refs: implement removal of ref storages\n      refs: implement logic to migrate between ref storage formats\n      builtin/refs: new command to migrate ref storage formats\n      ci: fix check for Ubuntu 20.04\n      global: improve const correctness when assigning string constants\n      global: convert intentionally-leaking config strings to consts\n      refs/reftable: stop micro-optimizing refname allocations on copy\n      reftable: cast away constness when assigning constants to records\n      refspec: remove global tag refspec structure\n      builtin/remote: cast away constness in `get_head_names()`\n      diff: cast string constant in `fill_textconv()`\n      line-log: stop assigning string constant to file parent buffer\n      line-log: always allocate the output prefix\n      entry: refactor how we remove items for delayed checkouts\n      ident: add casts for fallback name and GECOS\n      object-file: mark cached object buffers as const\n      object-file: make `buf` parameter of `index_mem()` a constant\n      pretty: add casts for decoration option pointers\n      compat/win32: fix const-correctness with string constants\n      http: do not assign string constant to non-const field\n      parse-options: cast long name for OPTION_ALIAS\n      send-pack: always allocate receive status\n      remote-curl: avoid assigning string constant to non-const variable\n      revision: always store allocated strings in output encoding\n      mailmap: always store allocated strings in mailmap blob\n      imap-send: drop global `imap_server_conf` variable\n      imap-send: fix leaking memory in `imap_server_conf`\n      builtin/rebase: do not assign default backend to non-constant field\n      builtin/rebase: always store allocated string in `options.strategy`\n      builtin/merge: always store allocated strings in `pull_twohead`\n      config.mak.dev: enable `-Wwrite-strings` warning\n      revision: fix memory leak when reversing revisions\n      parse-options: fix leaks for users of OPT_FILENAME\n      notes-utils: free note trees when releasing copied notes\n      bundle: plug leaks in `create_bundle()`\n      biultin/rev-parse: fix memory leaks in `--parseopt` mode\n      merge-recursive: fix leaking rename conflict info\n      revision: fix leaking display notes\n      notes: fix memory leak when pruning notes\n      builtin/rev-list: fix leaking bitmap index when calculating disk usage\n      object-name: free leaking object contexts\n      builtin/difftool: plug memory leaks in `run_dir_diff()`\n      builtin/merge-recursive: fix leaking object ID bases\n      merge-recursive: fix memory leak when finalizing merge\n      builtin/log: fix leaking commit list in git-cherry(1)\n      revision: free diff options\n      builtin/stash: fix leak in `show_stash()`\n      rerere: fix various trivial leaks\n      config: fix leaking \"core.notesref\" variable\n      commit: fix leaking parents when calling `commit_tree_extended()`\n      sequencer: fix leaking string buffer in `commit_staged_changes()`\n      apply: fix leaking string in `match_fragment()`\n      builtin/clone: plug leaking HEAD ref in `wanted_peer_refs()`\n      sequencer: fix memory leaks in `make_script_with_merges()`\n      builtin/merge: fix leaking `struct cmdnames` in `get_strategy()`\n      merge: fix leaking merge bases\n      line-range: plug leaking find functions\n      blame: fix leaking data for blame scoreboards\n      builtin/blame: fix leaking prefixed paths\n      builtin/blame: fix leaking ignore revs files\n      Makefile: add ability to append to CFLAGS and LDFLAGS\n      config: fix segfault when parsing \"core.abbrev\" without repo\n      parse-options-cb: stop clamping \"--abbrev=\" to hash length\n      object-name: don't try to abbreviate to lengths greater than hexsz\n      docs: introduce document to announce breaking changes\n      BreakingChanges: document upcoming change from \"sha1\" to \"sha256\"\n      BreakingChanges: document removal of grafting\n      BreakingChanges: document that we do not plan to deprecate git-checkout\n      hash: drop (mostly) unused `is_empty_{blob,tree}_sha1()` functions\n      hash: require hash algorithm in `hasheq()`, `hashcmp()` and `hashclr()`\n      hash: require hash algorithm in `oidread()` and `oidclr()`\n      global: ensure that object IDs are always padded\n      hash: convert `oidcmp()` and `oideq()` to compare whole hash\n      hash: make `is_null_oid()` independent of `the_repository`\n      hash: require hash algorithm in `is_empty_{blob,tree}_oid()`\n      hash: require hash algorithm in `empty_tree_oid_hex()`\n      global: introduce `USE_THE_REPOSITORY_VARIABLE` macro\n      refs: avoid include cycle with \"repository.h\"\n      hash-ll: merge with \"hash.h\"\n      http-fetch: don't crash when parsing packfile without a repo\n      oidset: pass hash algorithm when parsing file\n      protocol-caps: use hash algorithm from passed-in repository\n      replace-object: use hash algorithm from passed-in repository\n      compat/fsmonitor: fix socket path in networked SHA256 repos\n      t/helper: use correct object hash in partial-clone helper\n      t/helper: fix segfault in \"oid-array\" command without repository\n      t/helper: remove dependency on `the_repository` in \"proc-receive\"\n      hex: guard declarations with `USE_THE_REPOSITORY_VARIABLE`\n      refs: fix format migration on Cygwin\n\nPeter Krefting (2):\n      git-gui: sv.po: Update Swedish translation (576t0f0u)\n      l10n: sv.po: Update Swedish translation\n\nPhillip Wood (7):\n      sequencer: always free \"struct replay_opts\"\n      sequencer: start removing private fields from public API\n      sequencer: move current fixups to private context\n      sequencer: store commit message in private context\n      rebase -m: fix --signoff with conflicts\n      rebase -i: pass struct replay_opts to parse_insn_line()\n      rebase -i: improve error message when picking merge\n\nPiotr Szlazak (1):\n      doc: update http.cookieFile with in-memory cookie processing\n\nRalf Thielow (1):\n      l10n: Update German translation\n\nRandall S. Becker (3):\n      version: --build-options reports OpenSSL version information\n      version: teach --build-options to reports libcurl version information\n      version: teach --build-options to reports zlib version information\n\nRené Scharfe (11):\n      diff-lib: stop calling diff_setup_done() in do_diff_cache()\n      diff: report unmerged paths as changes in run_diff_cmd()\n      diff: fix --exit-code with external diff\n      difftool: add env vars directly in run_file_diff()\n      t4020: test exit code with external diffs\n      userdiff: add and use struct external_diff\n      diff: let external diffs report that changes are uninteresting\n      commit: remove find_header_mem()\n      diff: allow --color-moved with --no-ext-diff\n      submodule--helper: use strvec_pushf() for --super-prefix\n      clang-format: include kh_foreach* macros in ForEachMacros\n\nRikita Ishikawa (1):\n      doc: fix the max number of branches shown by \"show-branch\"\n\nRoland Hieber (3):\n      completion: add 'symbolic-ref'\n      completion: improve docs for using __git_complete\n      completion: add docs on how to add subcommand completions\n\nRubén Justo (9):\n      add-patch: do not show UI messages on stderr\n      add-patch: response to unknown command\n      t4014: cleanups in a few tests\n      format-patch: assume --cover-letter for diff in multi-patch series\n      pager: die when paging to non-existing command\n      t0613: mark as leak-free\n      test-lib: fix GIT_TEST_SANITIZE_LEAK_LOG\n      t0612: mark as leak-free\n      test-lib: GIT_TEST_SANITIZE_LEAK_LOG enabled by default\n\nShane Sun (1):\n      doc: fix case error of eol attribute in example\n\nTaylor Blau (64):\n      attr.c: move ATTR_MAX_FILE_SIZE check into read_attr_from_buf()\n      Makefile(s): avoid recipe prefix in conditional statements\n      object.h: add flags allocated by pack-bitmap.h\n      pack-bitmap-write.c: move commit_positions into commit_pos fields\n      pack-bitmap: avoid use of static `bitmap_writer`\n      pack-bitmap: drop unused `max_bitmaps` parameter\n      pack-bitmap-write.c: avoid uninitialized 'write_as' field\n      pack-bitmap: introduce `bitmap_writer_free()`\n      Documentation/gitpacking.txt: initial commit\n      Documentation/gitpacking.txt: describe pseudo-merge bitmaps\n      Documentation/technical: describe pseudo-merge bitmaps format\n      ewah: implement `ewah_bitmap_is_subset()`\n      pack-bitmap: move some initialization to `bitmap_writer_init()`\n      pseudo-merge.ch: initial commit\n      pack-bitmap-write: support storing pseudo-merge commits\n      pack-bitmap: implement `bitmap_writer_has_bitmapped_object_id()`\n      pack-bitmap: make `bitmap_writer_push_bitmapped_commit()` public\n      config: introduce `git_config_double()`\n      pseudo-merge: implement support for selecting pseudo-merge commits\n      pack-bitmap-write.c: write pseudo-merge table\n      pack-bitmap: extract `read_bitmap()` function\n      pseudo-merge: scaffolding for reads\n      pack-bitmap.c: read pseudo-merge extension\n      pseudo-merge: implement support for reading pseudo-merge commits\n      ewah: implement `ewah_bitmap_popcount()`\n      pack-bitmap: implement test helpers for pseudo-merge\n      t/test-lib-functions.sh: support `--notick` in `test_commit_bulk()`\n      pack-bitmap.c: use pseudo-merges during traversal\n      pack-bitmap: extra trace2 information\n      ewah: `bitmap_equals_ewah()`\n      pseudo-merge: implement support for finding existing merges\n      t/perf: implement performance tests for pseudo-merge bitmaps\n      midx-write.c: tolerate `--preferred-pack` without bitmaps\n      midx-write.c: reduce argument count for `get_sorted_entries()`\n      midx-write.c: pass `start_pack` to `compute_sorted_entries()`\n      midx-write.c: extract `should_include_pack()`\n      midx-write.c: extract `fill_packs_from_midx()`\n      midx-write.c: support reading an existing MIDX with `packs_to_include`\n      midx: replace `get_midx_rev_filename()` with a generic helper\n      pack-bitmap.c: reimplement `midx_bitmap_filename()` with helper\n      commit-graph.c: remove temporary graph layers on exit\n      server-info.c: remove temporary info files on exit\n      midx-write.c: do not read existing MIDX with `packs_to_include`\n      pack-bitmap.c: avoid uninitialized `pack_int_id` during reuse\n      pack-revindex.c: guard against out-of-bounds pack lookups\n      Documentation/technical/bitmap-format.txt: add missing position table\n      pack-bitmap.c: ensure pseudo-merge offset reads are bounded\n      t/t4216-log-bloom.sh: harden `test_bloom_filters_not_used()`\n      revision.c: consult Bloom filters for root commits\n      commit-graph: ensure Bloom filters are read with consistent settings\n      t/helper/test-read-graph.c: extract `dump_graph_info()`\n      bloom.h: make `load_bloom_filter_from_graph()` public\n      t/helper/test-read-graph: implement `bloom-filters` mode\n      t4216: test changed path filters with high bit paths\n      repo-settings: introduce commitgraph.changedPathsVersion\n      bloom: annotate filters with hash version\n      bloom: prepare to discard incompatible Bloom filters\n      commit-graph: unconditionally load Bloom filters\n      commit-graph: new Bloom filter version that fixes murmur3\n      object.h: fix mis-aligned flag bits table\n      commit-graph: reuse existing Bloom filters where possible\n      bloom: introduce `deinit_bloom_filters()`\n      config.mak.dev: fix typo when enabling -Wpedantic\n      Documentation: fix default value for core.maxTreeDepth\n\nTeng Long (1):\n      l10n: zh_CN: updated translation for 2.46\n\nTom Hughes (2):\n      push: don't fetch commit object when checking existence\n      promisor-remote: add promisor.quiet configuration option\n\nTorsten Bögershausen (1):\n      macOS: ls-files path fails if path of workdir is NFD\n\nVictoria Dye (1):\n      Documentation/git-merge-tree.txt: document -X\n\nVũ Tiến Hưng (1):\n      l10n: vi: Updated translation for 2.46\n\nXing Xin (4):\n      midx: disable replace objects\n      bundle-uri: verify oid before writing refs\n      fetch-pack: expose fsckObjects configuration logic\n      unbundle: extend object verification for fetches\n\nYi-Jyun Pan (1):\n      l10n: zh_TW: Git 2.46\n\nbrian m. carlson (24):\n      credential: add an authtype field\n      remote-curl: reset headers on new request\n      http: use new headers for each object request\n      credential: add a field for pre-encoded credentials\n      credential: gate new fields on capability\n      credential: add a field called \"ephemeral\"\n      docs: indicate new credential protocol fields\n      http: add support for authtype and credential\n      credential: add an argument to keep state\n      credential: enable state capability\n      docs: set a limit on credential line length\n      t5563: refactor for multi-stage authentication\n      credential: add support for multistage credential rounds\n      t: add credential tests for authtype\n      credential-cache: implement authtype capability\n      credential: add method for querying capabilities\n      t4046: avoid continue in &&-chain for zsh\n      vimdiff: make script and tests work with zsh\n      git-gui: po: fix typo in French \"aperçu\"\n      gitfaq: add documentation on proxies\n      gitfaq: give advice on using eol attribute in gitattributes\n      gitfaq: add entry about syncing working trees\n      doc: mention that proxies must be completely transparent\n      http: allow authenticating proactively\n\nØystein Walle (1):\n      Documentation: Mention that refspecs are explained elsewhere\n\n"},{"id":"499654","messageId":"000101dae2d3$05a3d210$10eb7630$@nexbridge.com","threadId":"61860","inReplyTo":"xmqqzfq0i0qa.fsf@gitster.g","subject":"RE: [ANNOUNCE] Git v2.46.0","fromName":"","fromEmail":"rsbecker@nexbridge.com","sentAt":"2024-07-30T22:51:26Z","receivedAt":"2024-07-30T22:51:35Z","isPatch":false,"sender":{"key":"randall.becker@nexbridge.ca","avatar":"https://avatars.githubusercontent.com/u/28956764?v=4"},"body":"On Monday, July 29, 2024 1:10 PM, Junio C Hamano wrote:\n>The latest feature release Git v2.46.0 is now available at the\n>usual places.  It is comprised of 746 non-merge commits since\n>v2.45.0, contributed by 96 people, 31 of which are new faces [*].\n\nv2.46.0 has passed on NonStop and is being packaged for general use.\n\nThank you to the whole team for your efforts.\n\n--Randall\n\n"}]}