{"thread":{"id":"60887","subject":"[ANNOUNCE] Git v2.44.0-rc0","startedAt":"2024-02-09T17:24:41Z","lastAt":"2024-02-09T17:24:41Z","messageCount":1,"participants":["Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"488305","messageId":"xmqqo7cph7ov.fsf@gitster.g","threadId":"60887","inReplyTo":null,"subject":"[ANNOUNCE] Git v2.44.0-rc0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-02-09T17:24:32Z","receivedAt":"2024-02-09T17:24:41Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"An early preview release Git v2.44.0-rc0 is now available for\ntesting at the usual places.  It is comprised of 432 non-merge\ncommits since v2.43.0, contributed by 67 people, 30 of which are new\nfaces [*].  Unlike previous cycles, I plan only for one release\ncandidate in the middle of next week until the final release around\nthe 20th.\n\nThe tarballs are found at:\n\n    https://www.kernel.org/pub/software/scm/git/testing/\n\nThe following public repositories all have a copy of the\n'v2.44.0-rc0' tag and the 'master' branch that the tag points at:\n\n  url = https://git.kernel.org/pub/scm/git/git\n  url = https://kernel.googlesource.com/pub/scm/git/git\n  url = git://repo.or.cz/alt-git.git\n  url = https://github.com/gitster/git\n\nNew contributors whose contributions weren't in v2.43.0 are as follows.\nWelcome to the Git development community!\n\n  Achu Luma, Antonin Delpeuch, Benjamin Lehmann, Britton Leo Kerin,\n  Carlos Andrés Ramírez Cataño, Chandra Pratap, Ghanshyam\n  Thakkar, Illia Bobyr, James Touton, Janik Haag, Joanna Wang,\n  Josh Brobst, Julian Prein, Justin Tobler, Kyle Lippincott,\n  Maarten van der Schrieck, Marcel Krause, Marcelo Roberto Jimenez,\n  Michael Lohmann, Nikolay Borisov, Nikolay Edigaryev, Ondrej\n  Pohorelsky, Sam Delmerico, Shreyansh Paliwal, Sören Krecker,\n  Stan Hu, Tamino Bauknecht, Wilfred Hughes, Willem Verstraeten,\n  and Zach FettersMoore.\n\nReturning contributors who helped this release are as follows.\nThanks for your continued support.\n\n  Andy Koppe, Arthur Chan, Calvin Wan, Carlo Marcelo Arenas Belón,\n  Christian Couder, Dragan Simic, Elijah Newren, Eric Sunshine,\n  Glen Choo, Han-Wen Nienhuys, Jean-Noël Avila, Jeff Hostetler,\n  Jeff King, Jiang Xin, Johannes Schindelin, John Cai, Jonathan\n  Tan, Josh Soref, Josh Steadmon, Josip Sokcevic, Junio C Hamano,\n  Konstantin Ryabitsev, Kristoffer Haugsbakk, Linus Arver,\n  M Hickford, Oswald Buddenhagen, Patrick Steinhardt, Philippe\n  Blain, Phillip Wood, René Scharfe, Rubén Justo, Simon Ser,\n  SZEDER Gábor, Taylor Blau, Todd Zullinger, Toon Claes, and\n  Victoria Dye.\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.44 Release Notes (draft)\n===============================\n\nBackward Compatibility Notes\n\n * \"git chekcout -B <branch>\" used to allow switching to a branch that\n   is in use on another worktree, but this was by mistake.  The users\n   need to use \"--ignore-other-worktrees\" option.\n\n\nUI, Workflows & Features\n\n * \"git add\" and \"git stash\" learned to support the \":(attr:...)\"\n   magic pathspec.\n\n * \"git rebase --autosquash\" is now enabled for non-interactive rebase,\n   but it is still incompatible with the apply backend.\n\n * Introduce \"git replay\", a tool meant on the server side without\n   working tree to recreate a history.\n\n * \"git merge-file\" learned to take the \"--diff-algorithm\" option to\n   use algorithm different from the default \"myers\" diff.\n\n * Command line completion (in contrib/) learned to complete path\n   arguments to the \"add/set\" subcommands of \"git sparse-checkout\"\n   better.\n\n * \"git checkout -B <branch> [<start-point>]\" allowed a branch that is\n   in use in another worktree to be updated and checked out, which\n   might be a bit unexpected.  The rule has been tightened, which is a\n   breaking change.  \"--ignore-other-worktrees\" option is required to\n   unbreak you, if you are used to the current behaviour that \"-B\"\n   overrides the safety.\n\n * The builtin_objectmode attribute is populated for each path\n   without adding anything in .gitattributes files, which would be\n   useful in magic pathspec, e.g., \":(attr:builtin_objectmode=100755)\"\n   to limit to executables.\n\n * \"git fetch\" learned to pay attention to \"fetch.all\" configuration\n   variable, which pretends as if \"--all\" was passed from the command\n   line when no remote parameter was given.\n\n * In addition to (rather cryptic) Security Identifiers, show username\n   and domain in the error message when we barf on mismatch between\n   the Git directory and the current user on Windows.\n\n * The error message given when \"git branch -d branch\" fails due to\n   commits unique to the branch has been split into an error and a new\n   conditional advice message.\n\n * When given an existing but unreadable file as a configuration file,\n   gitweb behaved as if the file did not exist at all, but now it\n   errors out.  This is a change that may break backward compatibility.\n\n * When $HOME/.gitignore is missing but XDG config file available, we\n   should write into the latter, not former.  \"git gc\" and \"git\n   maintenance\" wrote into a wrong \"global config\" file, which have\n   been corrected.\n\n * Define \"special ref\" as a very narrow set that consists of\n   FETCH_HEAD and MERGE_HEAD, and clarify everything else that used to\n   be classified as such are actually just pseudorefs.\n\n * All conditional \"advice\" messages show how to turn them off, which\n   becomes repetitive.  Setting advice.* configuration explicitly on\n   now omits the instruction part.\n\n * The \"disable repository discovery of a bare repository\" check,\n   triggered by setting safe.bareRepository configuration variable to\n   'explicit', has been loosened to exclude the \".git/\" directory inside\n   a non-bare repository from the check.  So you can do \"cd .git &&\n   git cmd\" to run a Git command that works on a bare repository without\n   explicitly specifying $GIT_DIR now.\n\n * The completion script (in contrib/) learned more options that can\n   be used with \"git log\".\n\n * The labels on conflict markers for the common ancestor, our version,\n   and the other version are available to custom 3-way merge driver\n   via %S, %X, and %Y placeholders.\n\n * The write codepath for the reftable data learned to honor\n   core.fsync configuration.\n\n * The \"--fsck-objects\" option of \"git index-pack\" now can take the\n   optional parameter to tweak severity of different fsck errors.\n\n * The wincred credential backend has been taught to support oauth\n   refresh token the same way as credential-cache and\n   credential-libsecret backends.\n\n\nPerformance, Internal Implementation, Development Support etc.\n\n * Process to add some form of low-level unit tests has started.\n\n * Add support for GitLab CI.\n\n * \"git for-each-ref --no-sort\" still sorted the refs alphabetically\n   which paid non-trivial cost.  It has been redefined to show output\n   in an unspecified order, to allow certain optimizations to take\n   advantage of.\n\n * Simplify API implementation to delete references by eliminating\n   duplication.\n\n * Subject approxidate() and show_date() machinery to OSS-Fuzz.\n\n * A new helper to let us pretend that we called lstat() when we know\n   our cache_entry is up-to-date via fsmonitor.\n\n * The optimization based on fsmonitor in the \"diff --cached\"\n   codepath is resurrected with the \"fake-lstat\" introduced earlier.\n\n * Test balloon to use C99 \"bool\" type from <stdbool.h> has been\n   added.\n\n * \"git clone\" has been prepared to allow cloning a repository with\n   non-default hash function into a repository that uses the reftable\n   backend.\n\n * Streaming spans of packfile data used to be done only from a\n   single, primary, pack in a repository with multiple packfiles.  It\n   has been extended to allow reuse from other packfiles, too.\n\n * Comment updates to help developers not to attempt to modify\n   messages from plumbing commands that must stay constant.\n\n   It might make sense to reassess the plumbing needs every few years,\n   but that should be done as a separate effort.\n\n * Move test-ctype helper to the unit-test framework.\n\n * Instead of manually creating refs/ hierarchy on disk upon a\n   creation of a secondary worktree, which is only usable via the\n   files backend, use the refs API to populate it.\n\n * CI for GitLab learned to drive macOS jobs.\n\n * A few tests to \"git commit -o <pathspec>\" and \"git commit -i\n   <pathspec>\" has been added.\n\n * Tests on ref API are moved around to prepare for reftable.\n\n * The Makefile often had to say \"-L$(path) -R$(path)\" that repeats\n   the path to the same library directory for link time and runtime.\n   A Makefile template is used to reduce such repetition.\n\n * The priority queue test has been migrated to the unit testing\n   framework.\n\n\nFixes since v2.43\n-----------------\n\n * The way CI testing used \"prove\" could lead to running the test\n   suite twice needlessly, which has been corrected.\n\n * Update ref-related tests.\n\n * \"git format-patch --encode-email-headers\" ignored the option when\n   preparing the cover letter, which has been corrected.\n\n * Newer versions of Getopt::Long started giving warnings against our\n   (ab)use of it in \"git send-email\".  Bump the minimum version\n   requirement for Perl to 5.8.1 (from September 2002) to allow\n   simplifying our implementation.\n\n * Earlier we stopped relying on commit-graph that (still) records\n   information about commits that are lost from the object store,\n   which has negative performance implications.  The default has been\n   flipped to disable this pessimization.\n\n * Stale URLs have been updated to their current counterparts (or\n   archive.org) and HTTP links are replaced with working HTTPS links.\n\n * trace2 streams used to record the URLs that potentially embed\n   authentication material, which has been corrected.\n\n * The sample pre-commit hook that tries to catch introduction of new\n   paths that use potentially non-portable characters did not notice\n   an existing path getting renamed to such a problematic path, when\n   rename detection was enabled.\n\n * The command line parser for the \"log\" family of commands was too\n   loose when parsing certain numbers, e.g., silently ignoring the\n   extra 'q' in \"git log -n 1q\" without complaining, which has been\n   tightened up.\n\n * \"git $cmd --end-of-options --rev -- --path\" for some $cmd failed\n   to interpret \"--rev\" as a rev, and \"--path\" as a path.  This was\n   fixed for many programs like \"reset\" and \"checkout\".\n\n * \"git bisect reset\" has been taught to clean up state files and refs\n   even when BISECT_START file is gone.\n\n * Some codepaths did not correctly parse configuration variables\n   specified with valueless \"true\", which has been corrected.\n\n * Code clean-up for sanity checking of command line options for \"git\n   show-ref\".\n\n * The code to parse the From e-mail header has been updated to avoid\n   recursion.\n\n * \"git fetch --atomic\" issued an unnecessary empty error message,\n   which has been corrected.\n\n * Command line completion script (in contrib/) learned to work better\n   with the reftable backend.\n\n * \"git status\" is taught to show both the branch being bisected and\n   being rebased when both are in effect at the same time.\n\n * \"git archive --list extra garbage\" silently ignored excess command\n   line parameters, which has been corrected.\n\n * \"git sparse-checkout set\" added default patterns even when the\n   patterns are being fed from the standard input, which has been\n   corrected.\n\n * \"git sparse-checkout (add|set) --[no-]cone --end-of-options\" did\n   not handle \"--end-of-options\" correctly after a recent update.\n\n * Unlike other environment variables that took the usual\n   true/false/yes/no as well as 0/1, GIT_FLUSH only understood 0/1,\n   which has been corrected.\n\n * Clearing in-core repository (happens during e.g., \"git fetch\n   --recurse-submodules\" with commit graph enabled) made in-core\n   commit object in an inconsistent state by discarding the necessary\n   data from commit-graph too early, which has been corrected.\n\n * Update to a new feature recently added, \"git show-ref --exists\".\n   (merge 0aabeaa562 tc/show-ref-exists-fix later to maint).\n\n * oss-fuzz tests are built and run in CI.\n   (merge c4a9cf1df3 js/oss-fuzz-build-in-ci later to maint).\n\n * Rename detection logic ignored the final line of a file if it is an\n   incomplete line.\n   (merge 1c5bc6971e en/diffcore-delta-final-line-fix later to maint).\n\n * GitHub CI update.\n   (merge 0188b2c8e0 pb/ci-github-skip-logs-for-broken-tests later to maint).\n\n * \"git diff --no-rename A B\" did not disable rename detection but did\n   not trigger an error from the command line parser.\n   (merge 457f96252f rs/parse-options-with-keep-unknown-abbrev-fix later to maint).\n\n * \"git archive --remote=<remote>\" learned to talk over the smart\n   http (aka stateless) transport.\n   (merge 176cd68634 jx/remote-archive-over-smart-http later to maint).\n\n * Fetching via protocol v0 over Smart HTTP transport sometimes failed\n   to correctly auto-follow tags.\n   (merge fba732c462 jk/fetch-auto-tag-following-fix later to maint).\n\n * The documentation for the --exclude-per-directory option marked it\n   as deprecated, which confused readers into thinking there may be a\n   plan to remove it in the future, which was not our intention.\n   (merge 0009542cab jc/ls-files-doc-update later to maint).\n\n * \"git diff --no-index file1 file2\" segfaulted while invoking the\n   external diff driver, which has been corrected.\n   (merge 85a9a63c92 jk/diff-external-with-no-index later to maint).\n\n * Rewrite //-comments to /* comments */ in files whose comments\n   prevalently use the latter.\n   (merge de65079d7b jc/comment-style-fixes later to maint).\n\n * Cirrus CI jobs started breaking because we specified version of\n   FreeBSD that is no longer available, which has been corrected.\n   (merge 81fffb66d3 cb/use-freebsd-13-2-at-cirrus-ci later to maint).\n\n * A caller called index_file_exists() that takes a string expressed\n   as <ptr, length> with a wrong length, which has been corrected.\n   (merge 156e28b36d jh/sparse-index-expand-to-path-fix later to maint).\n\n * Other code cleanup, docfix, build fix, etc.\n   (merge 5aea3955bc rj/clarify-branch-doc-m later to maint).\n   (merge 9cce3be2df bk/bisect-doc-fix later to maint).\n   (merge 8f50984cf4 ne/doc-filter-blob-limit-fix later to maint).\n   (merge f10b0989b8 la/strvec-comment-fix later to maint).\n   (merge 8430b438f6 vd/fsck-submodule-url-test later to maint).\n   (merge f10031fadd nb/rebase-x-shell-docfix later to maint).\n   (merge af3d2c160f jc/majordomo-to-subspace later to maint).\n   (merge ee9895b0ff sd/negotiate-trace-fix later to maint).\n   (merge 976d0251ce jc/coc-whitespace-fix later to maint).\n   (merge 9023198280 jt/p4-spell-re-with-raw-string later to maint).\n   (merge 36c9c44fa4 tb/pack-bitmap-drop-unused-struct-member later to maint).\n   (merge 19ed0dff8f js/win32-retry-pipe-write-on-enospc later to maint).\n   (merge 3cb4384683 jc/t0091-with-unknown-git later to maint).\n\n----------------------------------------------------------------\n\nChanges since v2.43.0 are as follows:\n\nAchu Luma (2):\n      unit-tests: rewrite t/helper/test-ctype.c as a unit test\n      t2400: avoid losing exit status to pipes\n\nAndy Koppe (3):\n      rebase: fully ignore rebase.autoSquash without -i\n      rebase: support --autosquash without -i\n      rebase: rewrite --(no-)autosquash documentation\n\nAntonin Delpeuch (2):\n      merge-file: add --diff-algorithm option\n      merge-ll: expose revision names to custom drivers\n\nArthur Chan (1):\n      fuzz: add new oss-fuzz fuzzer for date.c / date.h\n\nBritton Leo Kerin (2):\n      doc: use singular form of repeatable path arg\n      doc: refer to pathspec instead of path\n\nCarlo Marcelo Arenas Belón (1):\n      ci: update FreeBSD cirrus job\n\nChandra Pratap (4):\n      sideband.c: remove redundant 'NEEDSWORK' tag\n      write-or-die: make GIT_FLUSH a Boolean environment variable\n      t4129: prevent loss of exit code due to the use of pipes\n      tests: move t0009-prio-queue.sh to the new unit testing framework\n\nElijah Newren (32):\n      t6429: remove switching aspects of fast-rebase\n      replay: introduce new builtin\n      replay: start using parse_options API\n      replay: die() instead of failing assert()\n      replay: introduce pick_regular_commit()\n      replay: change rev walking options\n      replay: add an important FIXME comment about gpg signing\n      replay: remove progress and info output\n      replay: remove HEAD related sanity check\n      replay: make it a minimal server side command\n      replay: use standard revision ranges\n      replay: add --advance or 'cherry-pick' mode\n      replay: add --contained to rebase contained branches\n      replay: stop assuming replayed branches do not diverge\n      completion: squelch stray errors in sparse-checkout completion\n      completion: fix logic for determining whether cone mode is active\n      completion: avoid misleading completions in cone mode\n      completion: avoid user confusion in non-cone mode\n      treewide: remove unnecessary includes from header files\n      treewide: remove unnecessary includes in source files\n      archive.h: remove unnecessary include\n      blame.h: remove unnecessary includes\n      fsmonitor--daemon.h: remove unnecessary includes\n      http.h: remove unnecessary include\n      line-log.h: remove unnecessary include\n      pkt-line.h: remove unnecessary include\n      submodule-config.h: remove unnecessary include\n      trace2/tr2_tls.h: remove unnecessary include\n      treewide: add direct includes currently only pulled in transitively\n      treewide: remove unnecessary includes in source files\n      sparse-checkout: be consistent with end of options markers\n      diffcore-delta: avoid ignoring final 'line' of file\n\nEric Sunshine (1):\n      git-add.txt: add missing short option -A to synopsis\n\nGhanshyam Thakkar (4):\n      t7501: add tests for --include and --only\n      t7501: add tests for --amend --signoff\n      t0024: avoid losing exit status to pipes\n      t0024: style fix\n\nIllia Bobyr (1):\n      rebase: clarify --reschedule-failed-exec default\n\nJames Touton (1):\n      git-p4: use raw string literals for regular expressions\n\nJean-Noël Avila (2):\n      doc: enforce dashes in placeholders\n      doc: enforce placeholders in documentation\n\nJeff Hostetler (4):\n      trace2: fix signature of trace2_def_param() macro\n      t0211: test URL redacting in PERF format\n      t0212: test URL redacting in EVENT format\n      sparse-index: pass string length to index_file_exists()\n\nJeff King (38):\n      commit-graph: handle overflow in chunk_size checks\n      midx: check consistency of fanout table\n      commit-graph: drop redundant call to \"lite\" verification\n      commit-graph: clarify missing-chunk error messages\n      commit-graph: abort as soon as we see a bogus chunk\n      commit-graph: use fanout value for graph size\n      commit-graph: check order while reading fanout chunk\n      commit-graph: drop verify_commit_graph_lite()\n      commit-graph: mark chunk error messages for translation\n      parse-options: decouple \"--end-of-options\" and \"--\"\n      bisect: always clean on reset\n      config: handle NULL value when parsing non-bools\n      setup: handle NULL value when parsing extensions\n      trace2: handle NULL values in tr2_sysenv config callback\n      help: handle NULL value for alias.* config\n      submodule: handle NULL value when parsing submodule.*.branch\n      trailer: handle NULL value when parsing trailer-specific config\n      fsck: handle NULL value when parsing message config\n      config: reject bogus values for core.checkstat\n      git_xmerge_config(): prefer error() to die()\n      imap-send: don't use git_die_config() inside callback\n      config: use config_error_nonbool() instead of custom messages\n      diff: give more detailed messages for bogus diff.* config\n      config: use git_config_string() for core.checkRoundTripEncoding\n      push: drop confusing configset/callback redundancy\n      gpg-interface: drop pointless config_error_nonbool() checks\n      sequencer: simplify away extra git_config_string() call\n      mailinfo: fix out-of-bounds memory reads in unquote_quoted_pair()\n      t5100: make rfc822 comment test more careful\n      mailinfo: avoid recursion when unquoting From headers\n      t1006: add tests for %(objectsize:disk)\n      commit-graph: retain commit slab when closing NULL commit_graph\n      index-pack: spawn threads atomically\n      transport-helper: re-examine object dir after fetching\n      diff: handle NULL meta-info when spawning external diff\n      Makefile: use mkdir_p_parent_template for UNIT_TEST_BIN\n      Makefile: remove UNIT_TEST_BIN directory with \"make clean\"\n      t/Makefile: get UNIT_TESTS list from C sources\n\nJiang Xin (11):\n      t5574: test porcelain output of atomic fetch\n      fetch: no redundant error message for atomic fetch\n      test-pkt-line: add option parser for unpack-sideband\n      pkt-line: memorize sideband fragment in reader\n      pkt-line: do not chomp newlines for sideband messages\n      transport-helper: no connection restriction in connect_helper\n      remote-curl: supports git-upload-archive service\n      transport-helper: protocol v2 supports upload-archive\n      http-backend: new rpc-service for git-upload-archive\n      transport-helper: call do_take_over() in connect_helper\n      transport-helper: call do_take_over() in process_connect\n\nJoanna Wang (2):\n      attr: enable attr pathspec magic for git-add and git-stash\n      attr: add builtin objectmode values support\n\nJohannes Schindelin (11):\n      cmake: also build unit tests\n      unit-tests: do not mistake `.pdb` files for being executable\n      unit-tests: do show relative file paths\n      artifacts-tar: when including `.dll` files, don't forget the unit-tests\n      cmake: fix typo in variable name\n      cmake: use test names instead of full paths\n      cmake: handle also unit tests\n      ci: avoid running the test suite _twice_\n      packfile.c: fix a typo in `each_file_in_pack_dir_fn()`'s declaration\n      trace2: redact passwords from https:// URLs by default\n      win32: special-case `ENOSPC` when writing to a pipe\n\nJohn Cai (15):\n      t3210: move to t0601\n      remove REFFILES prerequisite for some tests in t1405 and t2017\n      t1414: convert test to use Git commands instead of writing refs manually\n      t1404: move reffiles specific tests to t0600\n      t1405: move reffiles specific tests to t0601\n      t1406: move reffiles specific tests to t0600\n      t1410: move reffiles specific tests to t0600\n      t1415: move reffiles specific tests to t0601\n      t1503: move reffiles specific tests to t0600\n      t3903: make drop stash test ref backend agnostic\n      t4202: move reffiles specific tests to t0600\n      t5312: move reffiles specific tests to t0601\n      reftable: honor core.fsync\n      index-pack: test and document --strict=<msg-id>=<severity>...\n      index-pack: --fsck-objects to take an optional argument for fsck msgs\n\nJosh Brobst (1):\n      builtin/reflog.c: fix dry-run option short name\n\nJosh Soref (13):\n      doc: update links to current pages\n      doc: switch links to https\n      doc: update links for andre-simon.de\n      doc: refer to internet archive\n      CodingGuidelines: move period inside parentheses\n      CodingGuidelines: write punctuation marks\n      SubmittingPatches: drop ref to \"What's in git.git\"\n      SubmittingPatches: discourage new trailers\n      SubmittingPatches: update extra tags list\n      SubmittingPatches: provide tag naming advice\n      SubmittingPatches: clarify GitHub visual\n      SubmittingPatches: clarify GitHub artifact format\n      SubmittingPatches: hyphenate non-ASCII\n\nJosh Steadmon (4):\n      unit tests: add a project plan document\n      ci: run unit tests in CI\n      fuzz: fix fuzz test build rules\n      ci: build and run minimal fuzzers in GitHub CI\n\nJulian Prein (1):\n      hooks--pre-commit: detect non-ASCII when renaming\n\nJunio C Hamano (44):\n      cache: add fake_lstat()\n      diff-lib: fix check_removed() when fsmonitor is active\n      checkout: refactor die_if_checked_out() caller\n      orphan/unborn: add to the glossary and use them consistently\n      orphan/unborn: fix use of 'orphan' in end-user facing messages\n      revision: parse integer arguments to --max-count, --skip, etc., more carefully\n      Start the 2.44 cycle\n      checkout: forbid \"-B <branch>\" from touching a branch used elsewhere\n      git.txt: HEAD is not that special\n      git-bisect.txt: BISECT_HEAD is not that special\n      refs.h: HEAD is not that special\n      docs: AUTO_MERGE is not that special\n      docs: MERGE_AUTOSTASH is not that special\n      doc: format.notes specify a ref under refs/notes/ hierarchy\n      The second batch\n      remote.h: retire CAS_OPT_NAME\n      The third batch\n      archive: \"--list\" does not take further options\n      sparse-checkout: use default patterns for 'set' only !stdin\n      The fourth batch\n      The fifth batch\n      The sixth batch\n      messages: mark some strings with \"up-to-date\" not to touch\n      The seventh batch\n      The eighth batch\n      The ninth batch\n      Docs: majordomo@vger.kernel.org has been decomissioned\n      CoC: whitespace fix\n      ls-files: avoid the verb \"deprecate\" for individual options\n      The tenth batch\n      builtin/worktree: comment style fixes\n      merge-ort.c: comment style fix\n      reftable/pq_test: comment style fix\n      The eleventh batch\n      t0091: allow test in a repository without tags\n      The twelfth batch\n      Makefile: reduce repetitive library paths\n      Makefile: simplify output of the libpath_template\n      The thirteenth batch\n      t/Makefile: say the default target upfront\n      The fourteenth batch\n      The fifteenth batch\n      Git 2.43.1\n      Git 2.44-rc0\n\nJustin Tobler (2):\n      t1401: remove lockfile creation\n      t5541: remove lockfile creation\n\nKristoffer Haugsbakk (5):\n      config: format newlines\n      config: rename global config function\n      config: factor out global config file retrieval\n      maintenance: use XDG config if it exists\n      config: add back code comment\n\nKyle Lippincott (1):\n      setup: allow cwd=.git w/ bareRepository=explicit\n\nLinus Arver (4):\n      commit: ignore_non_trailer computes number of bytes to ignore\n      trailer: find the end of the log message\n      trailer: use offsets for trailer_start/trailer_end\n      strvec: use correct member name in comments\n\nM Hickford (1):\n      credential/wincred: store oauth_refresh_token\n\nMaarten van der Schrieck (1):\n      Documentation: fix statement about rebase.instructionFormat\n\nMarcel Krause (1):\n      doc: make the gitfile syntax easier to discover\n\nMarcelo Roberto Jimenez (1):\n      gitweb: die when a configuration file cannot be read\n\nMichael Lohmann (2):\n      Documentation/git-merge.txt: fix reference to synopsis\n      Documentation/git-merge.txt: use backticks for command wrapping\n\nNikolay Borisov (1):\n      rebase: fix documentation about used shell in -x\n\nNikolay Edigaryev (1):\n      rev-list-options: fix off-by-one in '--filter=blob:limit=<n>' explainer\n\nPatrick Steinhardt (124):\n      t: allow skipping expected object ID in `ref-store update-ref`\n      t: convert tests to not write references via the filesystem\n      t: convert tests to not access symrefs via the filesystem\n      t: convert tests to not access reflog via the filesystem\n      t1450: convert tests to remove worktrees via git-worktree(1)\n      t4207: delete replace references via git-update-ref(1)\n      t7300: assert exact states of repo\n      t7900: assert the absence of refs via git-for-each-ref(1)\n      t: mark several tests that assume the files backend with REFFILES\n      ci: reorder definitions for grouping functions\n      ci: make grouping setup more generic\n      ci: group installation of Docker dependencies\n      ci: split out logic to set up failed test artifacts\n      ci: unify setup of some environment variables\n      ci: squelch warnings when testing with unusable Git repo\n      ci: install test dependencies for linux-musl\n      ci: add support for GitLab CI\n      t/lib-httpd: dynamically detect httpd and modules path\n      t/lib-httpd: stop using legacy crypt(3) for authentication\n      t9164: fix inability to find basename(1) in Subversion hooks\n      global: convert trivial usages of `test <expr> -a/-o <expr>`\n      contrib/subtree: stop using `-o` to test for number of args\n      contrib/subtree: convert subtree type check to use case statement\n      Makefile: stop using `test -o` when unlinking duplicate executables\n      t5510: ensure that the packed-refs file needs locking\n      refs/files: use transactions to delete references\n      refs: deduplicate code to delete references\n      refs: remove `delete_refs` callback from backends\n      commit-graph: disable GIT_COMMIT_GRAPH_PARANOIA by default\n      t0410: mark tests to require the reffiles backend\n      t1400: split up generic reflog tests from the reffile-specific ones\n      t1401: stop treating FETCH_HEAD as real reference\n      t1410: use test-tool to create empty reflog\n      t1417: make `reflog --updateref` tests backend agnostic\n      t3310: stop checking for reference existence via `test -f`\n      t4013: simplify magic parsing and drop \"failure\"\n      t5401: speed up creation of many branches\n      t5551: stop writing packed-refs directly\n      t6301: write invalid object ID via `test-tool ref-store`\n      reftable: wrap EXPECT macros in do/while\n      reftable: handle interrupted reads\n      reftable: handle interrupted writes\n      reftable/stack: verify that `reftable_stack_add()` uses auto-compaction\n      reftable/stack: perform auto-compaction with transactional interface\n      reftable/stack: reuse buffers when reloading stack\n      reftable/stack: fix stale lock when dying\n      reftable/stack: fix use of unseeded randomness\n      reftable/merged: reuse buffer to compute record keys\n      reftable/block: introduce macro to initialize `struct block_iter`\n      reftable/block: reuse buffer to compute record keys\n      setup: extract function to create the refdb\n      setup: allow skipping creation of the refdb\n      remote-curl: rediscover repository when fetching refs\n      builtin/clone: fix bundle URIs with mismatching object formats\n      builtin/clone: set up sparse checkout later\n      builtin/clone: skip reading HEAD when retrieving remote\n      builtin/clone: create the refdb with the correct object format\n      wt-status: read HEAD and ORIG_HEAD via the refdb\n      refs: propagate errno when reading special refs fails\n      refs: complete list of special refs\n      bisect: consistently write BISECT_EXPECTED_REV via the refdb\n      tests: adjust whitespace in chainlint expectations\n      t: introduce DEFAULT_REPO_FORMAT prereq\n      worktree: skip reading HEAD when repairing worktrees\n      refs: refactor logic to look up storage backends\n      setup: start tracking ref storage format\n      setup: set repository's formats on init\n      setup: introduce \"extensions.refStorage\" extension\n      setup: introduce GIT_DEFAULT_REF_FORMAT envvar\n      t: introduce GIT_TEST_DEFAULT_REF_FORMAT envvar\n      builtin/rev-parse: introduce `--show-ref-format` flag\n      builtin/init: introduce `--ref-format=` value flag\n      builtin/clone: introduce `--ref-format=` value flag\n      t9500: write \"extensions.refstorage\" into config\n      reftable/stack: do not overwrite errors when compacting\n      reftable/stack: do not auto-compact twice in `reftable_stack_add()`\n      reftable/writer: fix index corruption when writing multiple indices\n      reftable/record: constify some parts of the interface\n      reftable/record: store \"val1\" hashes as static arrays\n      reftable/record: store \"val2\" hashes as static arrays\n      reftable/merged: really reuse buffers to compute record keys\n      reftable/merged: transfer ownership of records when iterating\n      git-prompt: stop manually parsing HEAD with unknown ref formats\n      ci: add job performing static analysis on GitLab CI\n      refs: prepare `refs_init_db()` for initializing worktree refs\n      setup: move creation of \"refs/\" into the files backend\n      refs/files: skip creation of \"refs/{heads,tags}\" for worktrees\n      builtin/worktree: move setup of commondir file earlier\n      worktree: expose interface to look up worktree by name\n      builtin/worktree: create refdb via ref backend\n      reftable/stack: refactor stack reloading to have common exit path\n      reftable/stack: refactor reloading to use file descriptor\n      reftable/stack: use stat info to avoid re-reading stack list\n      reftable/blocksource: refactor code to match our coding style\n      reftable/blocksource: use mmap to read tables\n      git-p4: stop reaching into the refdb\n      commit-graph: fix memory leak when not writing graph\n      completion: discover repo path in `__git_pseudoref_exists ()`\n      t9902: verify that completion does not print anything\n      completion: improve existence check for pseudo-refs\n      completion: silence pseudoref existence check\n      completion: treat dangling symrefs as existing pseudorefs\n      t7527: decrease likelihood of racing with fsmonitor daemon\n      Makefile: detect new Homebrew location for ARM-based Macs\n      ci: handle TEST_OUTPUT_DIRECTORY when printing test failures\n      ci: make p4 setup on macOS more robust\n      ci: add macOS jobs to GitLab CI\n      reftable/stack: unconditionally reload stack after commit\n      reftable/stack: fix race in up-to-date check\n      sequencer: clean up pseudo refs with REF_NO_DEREF\n      sequencer: delete REBASE_HEAD in correct repo when picking commits\n      refs: convert AUTO_MERGE to become a normal pseudo-ref\n      sequencer: introduce functions to handle autostashes via refs\n      refs: convert MERGE_AUTOSTASH to become a normal pseudo-ref\n      refs: redefine special refs\n      Documentation: add \"special refs\" to the glossary\n      reftable/stack: adjust permissions of compacted tables\n      t1300: make tests more robust with non-default ref backends\n      t1301: mark test for `core.sharedRepository` as reffiles specific\n      t1302: make tests more robust with new extensions\n      t1419: mark test suite as files-backend specific\n      t5526: break test submodule differently\n      t: mark tests regarding git-pack-refs(1) to be backend specific\n      reftable/stack: fsync \"tables.list\" during compaction\n\nPhilippe Blain (6):\n      completion: complete missing rev-list options\n      completion: complete --patch-with-raw\n      completion: complete --encoding\n      completion: complete missing 'git log' options\n      ci(github): also skip logs of broken test cases\n      imap-send: add missing \"strbuf.h\" include under NO_CURL\n\nPhillip Wood (1):\n      unit tests: add TAP unit test framework\n\nRené Scharfe (19):\n      column: release strbuf and string_list after use\n      i18n: factorize even more 'incompatible options' messages\n      push: use die_for_incompatible_opt4() for - -delete/--tags/--all/--mirror\n      repack: use die_for_incompatible_opt3() for -A/-k/--cruft\n      revision: use die_for_incompatible_opt3() for - -graph/--reverse/--walk-reflogs\n      revision, rev-parse: factorize incompatibility messages about - -exclude-hidden\n      clean: factorize incompatibility message\n      worktree: standardize incompatibility messages\n      worktree: simplify incompatibility message for --orphan and commit-ish\n      show-ref: use die_for_incompatible_opt3()\n      t6300: avoid hard-coding object sizes\n      git-compat-util: convert skip_{prefix,suffix}{,_mem} to bool\n      rebase: use strvec_pushf() for format-patch revisions\n      fast-import: use mem_pool_calloc()\n      mem-pool: fix big allocations\n      mem-pool: simplify alignment calculation\n      t1006: prefer shell loop to awk for packed object sizes\n      parse-options: fully disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN\n      parse-options: simplify positivation handling\n\nRubén Justo (10):\n      status: fix branch shown when not only bisecting\n      branch: clarify <oldbranch> term\n      advice: sort the advice related lists\n      advice: fix an unexpected leading space\n      branch: make the advice to force-deleting a conditional one\n      advice: allow disabling the automatic hint in advise_if_enabled()\n      t5332: mark as leak-free\n      t6113: mark as leak-free\n      test-lib: check for TEST_PASSES_SANITIZE_LEAK\n      t0080: mark as leak-free\n\nSam Delmerico (1):\n      push: region_leave trace for negotiate_using_fetch\n\nShreyansh Paliwal (1):\n      test-lib-functions.sh: fix test_grep fail message wording\n\nSimon Ser (1):\n      format-patch: fix ignored encode_email_headers for cover letter\n\nStan Hu (2):\n      completion: refactor existence checks for pseudorefs\n      completion: support pseudoref existence checks for reftables\n\nSören Krecker (1):\n      mingw: give more details about unsafe directory's ownership\n\nTamino Bauknecht (1):\n      fetch: add new config option fetch.all\n\nTaylor Blau (27):\n      pack-objects: free packing_data in more places\n      pack-bitmap-write: deep-clear the `bb_commit` slab\n      pack-bitmap: plug leak in find_objects()\n      midx: factor out `fill_pack_info()`\n      midx: implement `BTMP` chunk\n      midx: implement `midx_locate_pack()`\n      pack-bitmap: pass `bitmapped_pack` struct to pack-reuse functions\n      ewah: implement `bitmap_is_empty()`\n      pack-bitmap: simplify `reuse_partial_packfile_from_bitmap()` signature\n      pack-bitmap: return multiple packs via `reuse_partial_packfile_from_bitmap()`\n      pack-objects: parameterize pack-reuse routines over a single pack\n      pack-objects: keep track of `pack_start` for each reuse pack\n      pack-objects: pass `bitmapped_pack`'s to pack-reuse functions\n      pack-objects: prepare `write_reused_pack()` for multi-pack reuse\n      pack-objects: prepare `write_reused_pack_verbatim()` for multi-pack reuse\n      pack-objects: include number of packs reused in output\n      git-compat-util.h: implement checked size_t to uint32_t conversion\n      midx: implement `midx_preferred_pack()`\n      pack-revindex: factor out `midx_key_to_pack_pos()` helper\n      pack-revindex: implement `midx_pair_to_pack_pos()`\n      pack-bitmap: prepare to mark objects from multiple packs for reuse\n      pack-objects: add tracing for various packfile metrics\n      t/test-lib-functions.sh: implement `test_trace2_data` helper\n      pack-objects: allow setting `pack.allowPackReuse` to \"single\"\n      pack-bitmap: enable reuse from all bitmapped packs\n      t/perf: add performance tests for multi-pack reuse\n      pack-bitmap: drop unused `reuse_objects`\n\nTodd Zullinger (2):\n      perl: bump the required Perl version to 5.8.1 from 5.8.0\n      send-email: avoid duplicate specification warnings\n\nToon Claes (1):\n      builtin/show-ref: treat directory as non-existing in --exists\n\nVictoria Dye (14):\n      ref-filter.c: really don't sort when using --no-sort\n      ref-filter.h: add max_count and omit_empty to ref_format\n      ref-filter.h: move contains caches into filter\n      ref-filter.h: add functions for filter/format & format-only\n      ref-filter.c: rename 'ref_filter_handler()' to 'filter_one()'\n      ref-filter.c: refactor to create common helper functions\n      ref-filter.c: filter & format refs in the same callback\n      for-each-ref: clean up documentation of --format\n      ref-filter.c: use peeled tag for '*' format fields\n      t/perf: add perf tests for for-each-ref\n      submodule-config.h: move check_submodule_url\n      test-submodule: remove command line handling for check-name\n      t7450: test submodule urls\n      submodule-config.c: strengthen URL fsck check\n\nZach FettersMoore (1):\n      subtree: fix split processing with multiple subtrees present\n\n"}]}