{"thread":{"id":"56835","subject":"[ANNOUNCE] Git v2.34.0-rc1","startedAt":"2021-11-03T23:17:48Z","lastAt":"2021-11-09T18:27:20Z","messageCount":3,"participants":["Junio C Hamano","Derrick Stolee"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"440405","messageId":"xmqqsfwc4yne.fsf@gitster.g","threadId":"56835","inReplyTo":null,"subject":"[ANNOUNCE] Git v2.34.0-rc1","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2021-11-03T23:17:41Z","receivedAt":"2021-11-03T23:17:48Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"A release candidate Git v2.34.0-rc1 is now available for testing at\nthe usual places.  It is comprised of 778 non-merge commits since\nv2.33.0, contributed by 90 people, 27 of which are new faces [*].\n\nThe tarballs are found at:\n\n    https://www.kernel.org/pub/software/scm/git/testing/\n\nThe following public repositories all have a copy of the\n'v2.34.0-rc1' tag and the 'master' branch that the tag points at:\n\n  url = https://git.kernel.org/pub/scm/git/git\n  url = https://kernel.googlesource.com/pub/scm/git/git\n  url = git://repo.or.cz/alt-git.git\n  url = https://github.com/gitster/git\n\nNew contributors whose contributions weren't in v2.33.0 are as follows.\nWelcome to the Git development community!\n\n  Alan Blotz, Azeem Bande-Ali, Dr. Matthias St. Pierre, Eli\n  Schwartz, git.mexon@spamgourmet.com, Glen Choo, Hamza Mahfooz,\n  Joel Klinghed, Johannes Altmanninger, Jonas Kittner, Kim\n  Altintop, Kyle Zhao, Mahi Kolla, Marvin Häuser, Mickey Endito,\n  Rob Browning, Robert Estelle, Robert Leftwich, Tal Kelrich,\n  Tassilo Horn, Thomas De Zeeuw, USAMI Kenta, Victor Gambier,\n  Victoria Dye, Wesley Schwengle, Xingman Chen, and Zoker.\n\nReturning contributors who helped this release are as follows.\nThanks for your continued support.\n\n  Ævar Arnfjörð Bjarmason, Alban Gruin, Alex Henrie, Andrzej\n  Hunt, Atharva Raykar, Bagas Sanjaya, Ben Boeckel, brian\n  m. carlson, Carlo Arenas, Carlo Marcelo Arenas Belón, Christian\n  Couder, David Aguilar, David Turner, Derrick Stolee, Đoàn\n  Trần Công Danh, Elijah Newren, Emily Shaffer, Emir Sarı,\n  Eric Sunshine, Eric Wong, Fabian Stelzer, Felipe Contreras,\n  Greg Hurrell, Han-Wen Nienhuys, Hariom Verma, Jacob Keller,\n  Jacob Vosmaer, Jean-Noël Avila, Jeff Hostetler, Jeff King,\n  Jiang Xin, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,\n  Jonathan Tan, Josh Steadmon, Junio C Hamano, Kaartic Sivaraam,\n  Lénaïc Huard, Martin Ågren, Matheus Tavares, Matheus Tavares\n  Bernardino, Matthias Aßhauer, Mike Hommey, Miriam Rubio, Orgad\n  Shaneh, Patrick Steinhardt, Philip Oakley, Philippe Blain,\n  Phillip Wood, Pranit Bauva, Randall S. Becker, René Scharfe,\n  Sergey Organov, Shourya Shukla, SZEDER Gábor, Takashi Iwai,\n  Tanushree Tumane, Taylor Blau, Teng Long, Todd Zullinger,\n  Ulrich Windl, and ZheNing Hu.\n\n[*] We are counting not just the authorship contribution but issue\n    reporting, mentoring, helping and reviewing that are recorded in\n    the commit trailers.\n\n----------------------------------------------------------------\n\nGit 2.34 Release Notes (draft)\n==============================\n\nUpdates since Git 2.33\n----------------------\n\nBackward compatibility notes\n\n * The \"--preserve-merges\" option of \"git rebase\" has been removed.\n\n\nUI, Workflows & Features\n\n * Pathname expansion (like \"~username/\") learned a way to specify a\n   location relative to Git installation (e.g. its $sharedir which is\n   $(prefix)/share), with \"%(prefix)\".\n\n * Use `ort` instead of `recursive` as the default merge strategy.\n\n * The userdiff pattern for \"java\" language has been updated.\n\n * \"git rebase\" by default skips changes that are equivalent to\n   commits that are already in the history the branch is rebased onto;\n   give messages when this happens to let the users be aware of\n   skipped commits, and also teach them how to tell \"rebase\" to keep\n   duplicated changes.\n\n * The advice message that \"git cherry-pick\" gives when it asks\n   conflicted replay of a commit to be resolved by the end user has\n   been updated.\n\n * After \"git clone --recurse-submodules\", all submodules are cloned\n   but they are not by default recursed into by other commands.  With\n   submodule.stickyRecursiveClone configuration set, submodule.recurse\n   configuration is set to true in a repository created by \"clone\"\n   with \"--recurse-submodules\" option.\n\n * The logic for auto-correction of misspelt subcommands learned to go\n   interactive when the help.autocorrect configuration variable is set\n   to 'prompt'.\n\n * \"git maintenance\" scheduler learned to use systemd timers as a\n   possible backend.\n\n * \"git diff --submodule=diff\" showed failure from run_command() when\n   trying to run diff inside a submodule, when the user manually\n   removes the submodule directory.\n\n * \"git bundle unbundle\" learned to show progress display.\n\n * In cone mode, the sparse-index code path learned to remove ignored\n   files (like build artifacts) outside the sparse cone, allowing the\n   entire directory outside the sparse cone to be removed, which is\n   especially useful when the sparse patterns change.\n\n * Taking advantage of the CGI interface, http-backend has been\n   updated to enable protocol v2 automatically when the other side\n   asks for it.\n\n * The credential-cache helper has been adjusted to Windows.\n\n * The error in \"git help no-such-git-command\" is handled better.\n\n * The unicode character width table (used for output alignment) has\n   been updated.\n\n * The ref iteration code used to optionally allow dangling refs to be\n   shown, which has been tightened up.\n\n * \"git add\", \"git mv\", and \"git rm\" have been adjusted to avoid\n   updating paths outside of the sparse-checkout definition unless\n   the user specifies a \"--sparse\" option.\n\n * \"git repack\" has been taught to generate multi-pack reachability\n   bitmaps.\n\n * \"git fsck\" has been taught to report mismatch between expected and\n   actual types of an object better.\n\n * Use ssh public crypto for object and push-cert signing.\n\n * \"git log --grep=string --author=name\" learns to highlight hits just\n   like \"git grep string\" does.\n\n\n\nPerformance, Internal Implementation, Development Support etc.\n\n * \"git bisect\" spawned \"git show-branch\" only to pretty-print the\n   title of the commit after checking out the next version to be\n   tested; this has been rewritten in C.\n\n * \"git add\" can work better with the sparse index.\n\n * Support for ancient versions of cURL library (pre 7.19.4) has been\n   dropped.\n\n * A handful of tests that assumed implementation details of files\n   backend for refs have been cleaned up.\n\n * trace2 logs learned to show parent process name to see in what\n   context Git was invoked.\n\n * Loading of ref tips to prepare for common ancestry negotiation in\n   \"git fetch-pack\" has been optimized by taking advantage of the\n   commit graph when available.\n\n * Remind developers that the userdiff patterns should be kept simple\n   and permissive, assuming that the contents they apply are always\n   syntactically correct.\n\n * The current implementation of GIT_TEST_FAIL_PREREQS is broken in\n   that checking for the lack of a prerequisite would not work.  Avoid\n   the use of \"if ! test_have_prereq X\" in a test script.\n\n * The revision traversal API has been optimized by taking advantage\n   of the commit-graph, when available, to determine if a commit is\n   reachable from any of the existing refs.\n\n * \"git fetch --quiet\" optimization to avoid useless computation of\n   info that will never be displayed.\n\n * Callers from older advice_config[] based API has been updated to\n   use the newer advice_if_enabled() and advice_enabled() API.\n\n * Teach \"test_pause\" and \"debug\" helpers to allow using the HOME and\n   TERM environment variables the user usually uses.\n\n * \"make INSTALL_STRIP=-s install\" allows the installation step to use\n   \"install -s\" to strip the binaries as they get installed.\n\n * Code that handles large number of refs in the \"git fetch\" code\n   path has been optimized.\n\n * The reachability bitmap file used to be generated only for a single\n   pack, but now we've learned to generate bitmaps for history that\n   span across multiple packfiles.\n\n * The code to make \"git grep\" recurse into submodules has been\n   updated to migrate away from the \"add submodule's object store as\n   an alternate object store\" mechanism (which is suboptimal).\n\n * The tracing of process ancestry information has been enhanced.\n\n * Reduce number of write(2) system calls while sending the\n   ref advertisement.\n\n * Update the build procedure to use the \"-pedantic\" build when\n   DEVELOPER makefile macro is in effect.\n\n * Large part of \"git submodule add\" gets rewritten in C.\n\n * The run-command API has been updated so that the callers can easily\n   ask the file descriptors open for packfiles to be closed immediately\n   before spawning commands that may trigger auto-gc.\n\n * An oddball OPTION_ARGUMENT feature has been removed from the\n   parse-options API.\n\n * The mergesort implementation used to sort linked list has been\n   optimized.\n\n * Remove external declaration of functions that no longer exist.\n\n * \"git multi-pack-index write --bitmap\" learns to propagate the\n   hashcache from original bitmap to resulting bitmap.\n\n * CI learns to run the leak sanitizer builds.\n\n * \"git grep --recurse-submodules\" takes trees and blobs from the\n   submodule repository, but the textconv settings when processing a\n   blob from the submodule is not taken from the submodule repository.\n   A test is added to demonstrate the issue, without fixing it.\n\n * Teach \"git help -c\" into helping the command line completion of\n   configuration variables.\n\n * When \"git cmd -h\" shows more than one line of usage text (e.g.\n   the cmd subcommand may take sub-sub-command), parse-options API\n   learned to align these lines, even across i18n/l10n.\n\n * Prevent \"make sparse\" from running for the source files that\n   haven't been modified.\n\n * The codepath to write a new version of .midx multi-pack index files\n   has learned to release the mmaped memory holding the current\n   version of .midx before removing them from the disk, as some\n   platforms do not allow removal of a file that still has mapping.\n\n * A new feature has been added to abort early in the test framework.\n\n\nFixes since v2.33\n-----------------\n\n * Input validation of \"git pack-objects --stdin-packs\" has been\n   corrected.\n\n * Bugfix for common ancestor negotiation recently introduced in \"git\n   push\" code path.\n\n * \"git pull\" had various corner cases that were not well thought out\n   around its --rebase backend, e.g. \"git pull --ff-only\" did not stop\n   but went ahead and rebased when the history on other side is not a\n   descendant of our history.  The series tries to fix them up.\n\n * \"git apply\" miscounted the bytes and failed to read to the end of\n   binary hunks.\n\n * \"git range-diff\" code clean-up.\n\n * \"git commit --fixup\" now works with \"--edit\" again, after it was\n   broken in v2.32.\n\n * Use upload-artifacts v1 (instead of v2) for 32-bit linux, as the\n   new version has a blocker bug for that architecture.\n\n * Checking out all the paths from HEAD during the last conflicted\n   step in \"git rebase\" and continuing would cause the step to be\n   skipped (which is expected), but leaves MERGE_MSG file behind in\n   $GIT_DIR and confuses the next \"git commit\", which has been\n   corrected.\n\n * Various bugs in \"git rebase -r\" have been fixed.\n\n * mmap() imitation used to call xmalloc() that dies upon malloc()\n   failure, which has been corrected to just return an error to the\n   caller to be handled.\n\n * \"git diff --relative\" segfaulted and/or produced incorrect result\n   when there are unmerged paths.\n\n * The delayed checkout code path in \"git checkout\" etc. were chatty\n   even when --quiet and/or --no-progress options were given.\n\n * \"git branch -D <branch>\" used to refuse to remove a broken branch\n   ref that points at a missing commit, which has been corrected.\n\n * Build update for Apple clang.\n\n * The parser for the \"--nl\" option of \"git column\" has been\n   corrected.\n\n * \"git upload-pack\" which runs on the other side of \"git fetch\"\n   forgot to take the ref namespaces into account when handling\n   want-ref requests.\n\n * The sparse-index support can corrupt the index structure by storing\n   a stale and/or uninitialized data, which has been corrected.\n\n * Buggy tests could damage repositories outside the throw-away test\n   area we created.  We now by default export GIT_CEILING_DIRECTORIES\n   to limit the damage from such a stray test.\n\n * Even when running \"git send-email\" without its own threaded\n   discussion support, a threading related header in one message is\n   carried over to the subsequent message to result in an unwanted\n   threading, which has been corrected.\n\n * The output from \"git fast-export\", when its anonymization feature\n   is in use, showed an annotated tag incorrectly.\n\n * Doc update plus improved error reporting.\n\n * Recent \"diff -m\" changes broke \"gitk\", which has been corrected.\n\n * Regression fix.\n\n * The \"git apply -3\" code path learned not to bother the lower level\n   merge machinery when the three-way merge can be trivially resolved\n   without the content level merge.  This fixes a regression caused by\n   recent \"-3way first and fall back to direct application\" change.\n\n * The code that optionally creates the *.rev reverse index file has\n   been optimized to avoid needless computation when it is not writing\n   the file out.\n\n * \"git range-diff -I... <range> <range>\" segfaulted, which has been\n   corrected.\n\n * The order in which various files that make up a single (conceptual)\n   packfile has been reevaluated and straightened up.  This matters in\n   correctness, as an incomplete set of files must not be shown to a\n   running Git.\n\n * The \"mode\" word is useless in a call to open(2) that does not\n   create a new file.  Such a call in the files backend of the ref\n   subsystem has been cleaned up.\n\n * \"git update-ref --stdin\" failed to flush its output as needed,\n   which potentially led the conversation to a deadlock.\n\n * When \"git am --abort\" fails to abort correctly, it still exited\n   with exit status of 0, which has been corrected.\n\n * Correct nr and alloc members of strvec struct to be of type size_t.\n\n * \"git stash\", where the tentative change involves changing a\n   directory to a file (or vice versa), was confused, which has been\n   corrected.\n\n * \"git clone\" from a repository whose HEAD is unborn into a bare\n   repository didn't follow the branch name the other side used, which\n   is corrected.\n\n * \"git cvsserver\" had a long-standing bug in its authentication code,\n   which has finally been corrected (it is unclear and is a separate\n   question if anybody is seriously using it, though).\n\n * \"git difftool --dir-diff\" mishandled symbolic links.\n\n * Sensitive data in the HTTP trace were supposed to be redacted, but\n   we failed to do so in HTTP/2 requests.\n\n * \"make clean\" has been updated to remove leftover .depend/\n   directories, even when it is not told to use them to compute header\n   dependencies.\n\n * Protocol v0 clients can get stuck parsing a malformed feature line.\n\n * A few kinds of changes \"git status\" can show were not documented.\n   (merge d2a534c515 ja/doc-status-types-and-copies later to maint).\n\n * The mergesort implementation used to sort linked list has been\n   optimized.\n   (merge c90cfc225b rs/mergesort later to maint).\n\n * An editor session launched during a Git operation (e.g. during 'git\n   commit') can leave the terminal in a funny state.  The code path\n   has updated to save the terminal state before, and restore it\n   after, it spawns an editor.\n   (merge 3d411afabc cm/save-restore-terminal later to maint).\n\n * \"git cat-file --batch\" with the \"--batch-all-objects\" option is\n   supposed to iterate over all the objects found in a repository, but\n   it used to translate these object names using the replace mechanism,\n   which defeats the point of enumerating all objects in the repository.\n   This has been corrected.\n   (merge bf972896d7 jk/cat-file-batch-all-wo-replace later to maint).\n\n * Recent sparse-index work broke safety against attempts to add paths\n   with trailing slashes to the index, which has been corrected.\n   (merge c8ad9d04c6 rs/make-verify-path-really-verify-again later to maint).\n\n * The \"--color-lines\" and \"--color-by-age\" options of \"git blame\"\n   have been missing, which are now documented.\n   (merge 8c32856133 bs/doc-blame-color-lines later to maint).\n\n * The PATH used in CI job may be too wide and let incompatible dlls\n   to be grabbed, which can cause the build&test to fail.  Tighten it.\n   (merge 7491ef6198 js/windows-ci-path-fix later to maint).\n\n * Avoid performance measurements from getting ruined by gc and other\n   housekeeping pauses interfering in the middle.\n   (merge be79131a53 rs/disable-gc-during-perf-tests later to maint).\n\n * Stop \"git add --dry-run\" from creating new blob and tree objects.\n   (merge e578d0311d rs/add-dry-run-without-objects later to maint).\n\n * \"git commit\" gave duplicated error message when the object store\n   was unwritable, which has been corrected.\n   (merge 4ef91a2d79 ab/fix-commit-error-message-upon-unwritable-object-store later to maint).\n\n * Recent sparse-index addition, namely any use of index_name_pos(),\n   can expand sparse index entries and breaks any code that walks\n   cache-tree or existing index entries.  One such instance of such a\n   breakage has been corrected.\n\n * The xxdiff difftool backend can exit with status 128, which the\n   difftool-helper that launches the backend takes as a significant\n   failure, when it is not significant at all.  Work it around.\n   (merge 571f4348dd da/mergetools-special-case-xxdiff-exit-128 later to maint).\n\n * Improve test framework around unwritable directories.\n   (merge 5d22e18965 ab/test-cleanly-recreate-trash-directory later to maint).\n\n * \"git push\" client talking to an HTTP server did not diagnose the\n   lack of the final status report from the other side correctly,\n   which has been corrected.\n   (merge c5c3486f38 jk/http-push-status-fix later to maint).\n\n * Update \"git archive\" documentation and give explicit mention on the\n   compression level for both zip and tar.gz format.\n   (merge c4b208c309 bs/archive-doc-compression-level later to maint).\n\n * Drop \"git sparse-index\" from the list of common commands.\n   (merge 6a9a50a8af sg/sparse-index-not-that-common-a-command later to maint).\n\n * \"git branch -c/-m new old\" was not described to copy config, which\n   has been corrected.\n   (merge 8252ec300e jc/branch-copy-doc later to maint).\n\n * Squelch over-eager warning message added during this cycle.\n   (merge 9e8fe7b1c7 jk/log-warn-on-bogus-encoding later to maint).\n\n * Fix long-standing shell syntax error in the completion script.\n   (merge 46b0585286 re/completion-fix-test-equality later to maint).\n\n * Teach \"git commit-graph\" command not to allow using replace objects\n   at all, as we do not use the commit-graph at runtime when we see\n   object replacement.\n   (merge 095d112f8c ab/ignore-replace-while-working-on-commit-graph later to maint).\n\n * Other code cleanup, docfix, build fix, etc.\n   (merge f188160be9 ab/bundle-remove-verbose-option later to maint).\n   (merge 8c6b4332b4 rs/close-pack-leakfix later to maint).\n   (merge 51b04c05b7 bs/difftool-msg-tweak later to maint).\n   (merge dd20e4a6db ab/make-compdb-fix later to maint).\n   (merge 6ffb990dc4 os/status-docfix later to maint).\n   (merge 100c2da2d3 rs/p3400-lose-tac later to maint).\n   (merge 76f3b69896 tb/aggregate-ignore-leading-whitespaces later to maint).\n   (merge 6e4fd8bfcd tz/doc-link-to-bundle-format-fix later to maint).\n   (merge f6c013dfa1 jc/doc-commit-header-continuation-line later to maint).\n   (merge ec9a37d69b ab/pkt-line-cleanup later to maint).\n   (merge 8650c6298c ab/fix-make-lint-docs later to maint).\n   (merge 1c720357ce ab/test-lib-diff-cleanup later to maint).\n   (merge 6b615dbece ks/submodule-add-message-fix later to maint).\n   (merge 82a57cd13f ma/doc-git-version later to maint).\n   (merge 203eb8381a jc/doc-format-patch-clarify-auto-base later to maint).\n   (merge 559664c792 ab/test-lib later to maint).\n\n----------------------------------------------------------------\n\nChanges since v2.33.0 are as follows:\n\nAlex Henrie (1):\n      pull: abort if --ff-only is given and fast-forwarding is impossible\n\nAndrzej Hunt (1):\n      connect: also update offset for features without values\n\nAtharva Raykar (11):\n      submodule--helper: introduce add-config subcommand\n      submodule--helper: add options for compute_submodule_clone_url()\n      submodule--helper: refactor resolve_relative_url() helper\n      submodule--helper: remove repeated code in sync_submodule()\n      dir: libify and export helper functions from clone.c\n      submodule--helper: convert the bulk of cmd_add() to C\n      submodule--helper: remove add-clone subcommand\n      submodule--helper: remove add-config subcommand\n      submodule--helper: remove resolve-relative-url subcommand\n      submodule--helper: rename compute_submodule_clone_url()\n      submodule--helper: run update procedures from C\n\nAzeem Bande-Ali (1):\n      help.c: help.autocorrect=prompt waits for user action\n\nBagas Sanjaya (8):\n      make: add INSTALL_STRIP option variable\n      Documentation: fix default directory of git bugreport -o\n      ls-files: use imperative mood for -X and -z option description\n      difftool: fix word spacing in the usage strings\n      blame: describe default output format\n      bisect--helper: add space between colon and following sentence\n      blame: document --color-* options\n      archive: describe compression level option\n\nBen Boeckel (2):\n      advice: add enum variants for missing advice variables\n      advice: remove read uses of most global `advice_` variables\n\nCarlo Marcelo Arenas Belón (23):\n      build: update detect-compiler for newer Xcode version\n      builtin/merge: avoid -Wformat-extra-args from ancient Xcode\n      ci: run a pedantic build as part of the GitHub workflow\n      ci: update freebsd 12 cirrus job\n      ci: use upload-artifacts v1 for dockerized jobs\n      remote: avoid -Wunused-but-set-variable in gcc with -DNDEBUG\n      win32: allow building with pedantic mode enabled\n      developer: enable pedantic by default\n      t0301: fixes for windows compatibility\n      credential-cache: check for windows specific errors\n      git-compat-util: include declaration for unix sockets in windows\n      tree-diff: fix leak when not HAVE_ALLOCA_H\n      t0000: avoid masking git exit value through pipes\n      git-cvsserver: use crypt correctly to compare password hashes\n      git-cvsserver: protect against NULL in crypt(3)\n      Documentation: cleanup git-cvsserver\n      unicode: update the width tables to Unicode 14\n      simple-ipc: move definition of ipc_active_state outside of ifdef\n      lazyload.h: use an even more generic function pointer than FARPROC\n      Makefile: restrict -Wpedantic and -Wno-pedantic-ms-format better\n      terminal: teach git how to save/restore its terminal settings\n      editor: save and reset terminal after calling EDITOR\n      wrapper: remove xunsetenv()\n\nDavid Aguilar (6):\n      difftool: fix symlink-file writing in dir-diff mode\n      difftool: create a tmpdir path without repeated slashes\n      difftool: refactor dir-diff to write files using helper functions\n      difftool: remove an unnecessary call to strbuf_release()\n      difftool: add a missing space to the run_dir_diff() comments\n      mergetools/xxdiff: prevent segfaults from stopping difftool\n\nDavid Turner (3):\n      t4060: remove unused variable\n      diff --submodule=diff: do not fail on ever-initialied deleted submodules\n      diff --submodule=diff: don't print failure message twice\n\nDerrick Stolee (36):\n      t1092: test merge conflicts outside cone\n      add: allow operating on a sparse-only index\n      pathspec: stop calling ensure_full_index\n      add: ignore outside the sparse-checkout in refresh()\n      add: remove ensure_full_index() with --renormalize\n      maintenance: skip bootout/bootstrap when plist is registered\n      t7519: rewrite sparse index test\n      sparse-index: silently return when not using cone-mode patterns\n      unpack-trees: fix nested sparse-dir search\n      sparse-index: silently return when cache tree fails\n      sparse-index: use WRITE_TREE_MISSING_OK\n      sparse-checkout: create helper methods\n      attr: be careful about sparse directories\n      sparse-index: add SPARSE_INDEX_MEMORY_ONLY flag\n      sparse-checkout: clear tracked sparse dirs\n      diff: ignore sparse paths in diffstat\n      merge: make sparse-aware with ORT\n      merge-ort: expand only for out-of-cone conflicts\n      t1092: add cherry-pick, rebase tests\n      sequencer: ensure full index if not ORT strategy\n      sparse-index: integrate with cherry-pick and rebase\n      t/perf/run: fix bin-wrappers computation\n      t3705: test that 'sparse_entry' is unstaged\n      t1092: behavior for adding sparse files\n      dir: select directories correctly\n      dir: fix pattern matching on dirs\n      add: fail when adding an untracked sparse file\n      add: skip tracked paths outside sparse-checkout cone\n      add: implement the --sparse option\n      add: update --chmod to skip sparse paths\n      add: update --renormalize to skip sparse paths\n      rm: add --sparse option\n      rm: skip sparse paths with missing SKIP_WORKTREE\n      mv: refuse to move sparse paths\n      advice: update message to suggest '--sparse'\n      dir: fix directory-matching bug\n\nElijah Newren (48):\n      t7601: test interaction of merge/rebase/fast-forward flags and options\n      t7601: add tests of interactions with multiple merge heads and config\n      pull: since --ff-only overrides, handle it first\n      pull: make --rebase and --no-rebase override pull.ff=only\n      pull: abort by default when fast-forwarding is not possible\n      pull: update docs & code for option compatibility with rebasing\n      pull: fix handling of multiple heads\n      merge-ort: rename str{map,intmap,set}_func()\n      diffcore-rename: use a mem_pool for exact rename detection's hashmap\n      merge-ort: add pool_alloc, pool_calloc, and pool_strndup wrappers\n      merge-ort: set up a memory pool\n      merge-ort: switch our strmaps over to using memory pools\n      diffcore-rename, merge-ort: add wrapper functions for filepair alloc/dealloc\n      merge-ort: store filepairs and filespecs in our mem_pool\n      merge-ort: reuse path strings in pool_alloc_filespec\n      merge-ort: remove compile-time ability to turn off usage of memory pools\n      git-rebase.txt: correct antiquated claims about --rebase-merges\n      directory-rename-detection.txt: small updates due to merge-ort optimizations\n      Documentation: edit awkward references to `git merge-recursive`\n      merge-strategies.txt: update wording for the resolve strategy\n      merge-strategies.txt: do not imply using copy detection is desired\n      merge-strategies.txt: avoid giving special preference to patience algorithm\n      merge-strategies.txt: fix simple capitalization error\n      git-rebase.txt: correct out-of-date and misleading text about renames\n      merge-strategies.txt: add coverage of the `ort` merge strategy\n      Update error message and code comment\n      Change default merge backend from recursive to ort\n      Update docs for change of default merge backend\n      t3903: document a pair of directory/file bugs\n      stash: avoid feeding directories to update-index\n      stash: restore untracked files AFTER restoring tracked files\n      git-am.txt: clarify --abort behavior\n      t4151: add a few am --abort tests\n      am: fix incorrect exit status on am fail to abort\n      tests: remove leftover untracked files\n      trace2.h: fix trivial comment typo\n      merge-ort: fix completely wrong comment\n      t2500: add various tests for nuking untracked files\n      checkout, read-tree: fix leak of unpack_trees_options.dir\n      read-tree, merge-recursive: overwrite ignored files by default\n      unpack-trees: introduce preserve_ignored to unpack_trees_options\n      unpack-trees: make dir an internal-only struct\n      Remove ignored files by default when they are in the way\n      Change unpack_trees' 'reset' flag into an enum\n      unpack-trees: avoid nuking untracked dir in way of unmerged file\n      unpack-trees: avoid nuking untracked dir in way of locally deleted file\n      Comment important codepaths regarding nuking untracked files/dirs\n      Documentation: call out commands that nuke untracked files/directories\n\nEmily Shaffer (3):\n      tr2: make process info collection platform-generic\n      tr2: log parent process name\n      hook.c: add a hook_exists() wrapper and use it in bugreport.c\n\nEric Wong (1):\n      doc/technical: update note about core.multiPackIndex\n\nFabian Stelzer (11):\n      ssh signing: preliminary refactoring and clean-up\n      ssh signing: add test prereqs\n      ssh signing: add ssh key format and signing code\n      ssh signing: retrieve a default key from ssh-agent\n      ssh signing: provide a textual signing_key_id\n      ssh signing: verify signatures using ssh-keygen\n      ssh signing: duplicate t7510 tests for commits\n      ssh signing: tests for logs, tags & push certs\n      ssh signing: test that gpg fails for unknown keys\n      ssh signing: fmt-merge-msg tests & config parse\n      ssh signing: clarify trustlevel usage in docs\n\nFelipe Contreras (4):\n      completion: bash: fix prefix detection in branch.*\n      completion: bash: fix for suboptions with value\n      completion: bash: fix for multiple dash commands\n      completion: bash: add correct suffix in variables\n\nGlen Choo (4):\n      MyFirstContribution: Document --range-diff option when writing v2\n      fsck: verify commit graph when implicitly enabled\n      fsck: verify multi-pack-index when implictly enabled\n      gc: perform incremental repack when implictly enabled\n\nGreg Hurrell (1):\n      gitweb: use HEAD as secondary sort key in git_get_heads_list()\n\nHamza Mahfooz (3):\n      grep: refactor next_match() and match_one_pattern() for external use\n      pretty: colorize pattern matches in commit messages\n      grep/pcre2: fix an edge case concerning ascii patterns and UTF-8 data\n\nHan-Wen Nienhuys (14):\n      t6050: use git-update-ref rather than filesystem access\n      t1503: mark symlink test as REFFILES\n      t6120: use git-update-ref rather than filesystem access\n      t3320: use git-symbolic-ref rather than filesystem access\n      t2402: use ref-store test helper to create broken symlink\n      t1405: use 'git reflog exists' to check reflog existence\n      t1405: mark test for 'git pack-refs' as REFFILES\n      t1410: mark test as REFFILES\n      t7064: use update-ref -d to remove upstream branch\n      t6500: use \"ls -1\" to snapshot ref database state\n      t6001: avoid direct file system access\n      refs: remove EINVAL errno output from specification of read_raw_ref_fn\n      refs/files-backend: stop setting errno from lock_ref_oid_basic\n      refs: make errno output explicit for read_raw_ref_fn\n\nJacob Vosmaer (2):\n      pkt-line: add stdio packet write functions\n      upload-pack: use stdio in send_ref callbacks\n\nJeff Hostetler (8):\n      sparse-index: copy dir_hash in ensure_full_index()\n      trace2: add trace2_child_ready() to report on background children\n      simple-ipc: preparations for supporting binary messages.\n      simple-ipc/ipc-win32: add trace2 debugging\n      simple-ipc/ipc-win32: add Windows ACL to named pipe\n      run-command: create start_bg_command\n      t/helper/simple-ipc: convert test-simple-ipc to use start_bg_command\n      t/perf/perf-lib.sh: remove test_times.* at the end test_perf_()\n\nJeff King (73):\n      http: drop support for curl < 7.11.1\n      http: drop support for curl < 7.16.0\n      http: drop support for curl < 7.19.4\n      build: clang version may not be followed by extra words\n      range-diff: drop useless \"offset\" variable from read_patches()\n      range-diff: handle unterminated lines in read_patches()\n      range-diff: use ssize_t for parsed \"len\" in read_patches()\n      apply: keep buffer/size pair in sync when parsing binary hunks\n      t5323: drop mentions of \"master\"\n      refs: drop unused \"flags\" parameter to lock_ref_oid_basic()\n      logmsg_reencode(): warn when iconv() fails\n      docs: use \"character encoding\" to refer to commit-object encoding\n      t0410: disable GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP\n      t5310: disable GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP\n      pack-bitmap: drop repository argument from prepare_midx_bitmap_git()\n      pack-bitmap: drop bitmap_index argument from try_partial_reuse()\n      t5562: use alarm() to interrupt timed child-wait\n      t5551: test v2-to-v0 http protocol fallback\n      http-backend: handle HTTP_GIT_PROTOCOL CGI variable\n      docs/http-backend: mention v2 protocol\n      docs/git: discuss server-side config for GIT_PROTOCOL\n      docs/protocol-v2: point readers transport config discussion\n      strvec: use size_t to store nr and alloc\n      difftool: prepare \"diff\" cmdline in cmd_difftool()\n      serve: rename is_command() to parse_command()\n      serve: return capability \"value\" from get_capability()\n      serve: add \"receive\" method for v2 capabilities table\n      serve: provide \"receive\" function for object-format capability\n      serve: provide \"receive\" function for session-id capability\n      serve: drop \"keys\" strvec\n      ls-refs: ignore very long ref-prefix counts\n      docs/protocol-v2: clarify some ls-refs ref-prefix details\n      serve: reject bogus v2 \"command=ls-refs=foo\"\n      serve: reject commands used as capabilities\n      ls-refs: reject unknown arguments\n      t1400: avoid SIGPIPE race condition on fifo\n      clone: handle unborn branch in bare repos\n      grep: stop modifying buffer in strip_timestamp\n      grep: stop modifying buffer in show_line()\n      grep: stop modifying buffer in grep_source_1()\n      grep: mark \"haystack\" buffers as const\n      grep: store grep_source buffer as const\n      http: match headers case-insensitively when redacting\n      t7900: clean up some more broken refs\n      t5516: don't use HEAD ref for invalid ref-deletion tests\n      t5600: provide detached HEAD for corruption failures\n      t5312: drop \"verbose\" helper\n      t5312: create bogus ref as necessary\n      t5312: test non-destructive repack\n      t5312: be more assertive about command failure\n      refs-internal.h: move DO_FOR_EACH_* flags next to each other\n      refs-internal.h: reorganize DO_FOR_EACH_* flag documentation\n      refs: add DO_FOR_EACH_OMIT_DANGLING_SYMREFS flag\n      refs: omit dangling symrefs when using GIT_REF_PARANOIA\n      refs: turn on GIT_REF_PARANOIA by default\n      repack, prune: drop GIT_REF_PARANOIA settings\n      ref-filter: stop setting FILTER_REFS_INCLUDE_BROKEN\n      ref-filter: drop broken-ref code entirely\n      refs: drop \"broken\" flag from for_each_fullref_in()\n      test-read-midx: fix leak of bitmap_index struct\n      t1006: clean up broken objects\n      cat-file: mention --unordered along with --batch-all-objects\n      cat-file: disable refs/replace with --batch-all-objects\n      cat-file: split ordered/unordered batch-all-objects callbacks\n      cat-file: use packed_object_info() for --batch-all-objects\n      gpg-interface: fix leak of \"line\" in parse_ssh_output()\n      gpg-interface: fix leak of strbufs in get_ssh_key_fingerprint()\n      send-pack: complain about \"expecting report\" with --helper-status\n      transport-helper: recognize \"expecting report\" error from send-pack\n      submodule: drop unused sm_name parameter from append_fetch_remotes()\n      Documentation/Makefile: fix lint-docs mkdir dependency\n      t5310: drop lib-bundle.sh include\n      log: document --encoding behavior on iconv() failure\n\nJiang Xin (2):\n      ci: new github-action for git-l10n code review\n      i18n: fix typos found during l10n for git 2.34.0\n\nJoel Klinghed (1):\n      commit: restore --edit when combined with --fixup\n\nJohannes Altmanninger (4):\n      Documentation/git-status: remove impossible porcelain status DR and DC\n      Documentation/diff-format: state in which cases porcelain status is T\n      Documentation/git-status: document porcelain status T (typechange)\n      Documentation/git-status: mention how to detect copies\n\nJohannes Schindelin (24):\n      tests: exercise the RUNTIME_PREFIX feature\n      expand_user_path(): remove stale part of the comment\n      expand_user_path(): clarify the role of the `real_home` parameter\n      Use a better name for the function interpolating paths\n      interpolate_path(): allow specifying paths relative to the runtime prefix\n      maintenance: create `launchctl` configuration using a lock file\n      t5520: do not use `pull.rebase=preserve`\n      remote: warn about unhandled branch.<name>.rebase values\n      tests: stop testing `git rebase --preserve-merges`\n      pull: remove support for `--rebase=preserve`\n      rebase: drop support for `--preserve-merges`\n      git-svn: drop support for `--preserve-merges`\n      rebase: drop the internal `rebase--interactive` command\n      rebase: remove obsolete code comment\n      rebase: stop mentioning the -p option in comments\n      rebase: remove a no-longer-used function\n      sequencer: restrict scope of a formerly public function\n      commit-graph: when closing the graph, also release the slab\n      pull: release packs before fetching\n      run-command: prettify the `RUN_COMMAND_*` flags\n      run-command: offer to close the object store before running\n      run_auto_maintenance(): implicitly close the object store\n      Close object store closer to spawning child processes\n      ci(windows): ensure that we do not pick up random executables\n\nJohannes Sixt (9):\n      t9001: PATH must not use Windows-style paths\n      lazyload.h: fix warnings about mismatching function pointer types\n      t4034/cpp: actually test that operator tokens are not split\n      t4034: add tests showing problematic cpp tokenizations\n      userdiff-cpp: tighten word regex\n      userdiff-cpp: prepare test cases with yet unsupported features\n      userdiff-cpp: permit the digit-separating single-quote in numbers\n      userdiff-cpp: learn the C++ spaceship operator\n      userdiff-cpp: back out the digit-separators in numbers\n\nJonathan Tan (22):\n      send-pack: fix push.negotiate with remote helper\n      send-pack: fix push nego. when remote has refs\n      fetch: die on invalid --negotiation-tip hash\n      submodule: lazily add submodule ODBs as alternates\n      grep: use submodule-ODB-as-alternate lazy-addition\n      grep: typesafe versions of grep_source_init\n      grep: read submodule entry with explicit repo\n      grep: allocate subrepos on heap\n      grep: add repository to OID grep sources\n      submodule-config: pass repo upon blob config read\n      t7814: show lack of alternate ODB-adding\n      submodule: remove unnecessary unabsorbed fallback\n      repository: support unabsorbed in repo_submodule_init\n      revision: remove \"submodule\" from opt struct\n      submodule: extract path to submodule gitdir func\n      refs: plumb repo into ref stores\n      refs: teach arbitrary repo support to iterators\n      refs: peeling non-the_repository iterators is BUG\n      merge-{ort,recursive}: remove add_submodule_odb()\n      object-file: only register submodule ODB if needed\n      submodule: pass repo to check_has_commit()\n      submodule: trace adding submodule ODB as alternate\n\nJosh Steadmon (2):\n      connect, protocol: log negotiated protocol version\n      sequencer: advise if skipping cherry-picked commit\n\nJunio C Hamano (30):\n      expand_user_path: allow in-flight topics to keep using the old name\n      bisect: do not run show-branch just to show the current commit\n      bisect: simplify return code from bisect_checkout()\n      build: catch clang that identifies itself as \"$VENDOR clang\"\n      userdiff: comment on the builtin patterns\n      The first batch post 2.33\n      The second batch\n      The third batch\n      apply: resolve trivial merge without hitting ll-merge with \"--3way\"\n      hash-object: prefix_filename() returns allocated memory these days\n      The fourth batch\n      The fifth batch\n      The sixth batch\n      The seventh batch\n      The eighth batch\n      The ninth batch\n      The tenth batch\n      The eleventh batch\n      Twelfth batch\n      Git 2.33.1\n      signature-format.txt: explain and illustrate multi-line headers\n      Thirteenth batch\n      The fourteenth batch\n      format-patch (doc): clarify --base=auto\n      branch (doc): -m/-c copies config and reflog\n      The fifteenth batch\n      Revert \"logmsg_reencode(): warn when iconv() fails\"\n      Git 2.34-rc0\n      A few more topics before -rc1\n      Git 2.34-rc1\n\nKaartic Sivaraam (1):\n      submodule--helper: fix incorrect newlines in an error message\n\nKim Altintop (3):\n      t5730: introduce fetch command helper\n      upload-pack.c: treat want-ref relative to namespace\n      docs: clarify the interaction of transfer.hideRefs and namespaces\n\nKyle Zhao (1):\n      pack-revindex.h: correct the time complexity descriptions\n\nLénaïc Huard (4):\n      cache.h: Introduce a generic \"xdg_config_home_for(…)\" function\n      maintenance: `git maintenance run` learned `--scheduler=<scheduler>`\n      maintenance: add support for systemd timers on Linux\n      maintenance: fix test t7900-maintenance.sh\n\nMahi Kolla (1):\n      clone: set submodule.recurse=true if submodule.stickyRecursiveClone enabled\n\nMartin Ågren (6):\n      config.txt: fix typo\n      git.txt: fix typo\n      git-multi-pack-index.txt: change \"folder\" to \"directory\"\n      gitignore.txt: change \"folder\" to \"directory\"\n      gitweb.txt: change \"folder\" to \"directory\"\n      git-bundle.txt: add missing words and punctuation\n\nMarvin Häuser (1):\n      send-email: avoid incorrect header propagation\n\nMatheus Tavares (3):\n      checkout: make delayed checkout respect --quiet and --no-progress\n      grep: demonstrate bug with textconv attributes and submodules\n      add, rm, mv: fix bug that prevents the update of non-sparse dirs\n\nMatthias Aßhauer (2):\n      help: make sure local html page exists before calling external processes\n      documentation: add documentation for 'git version'\n\nMickey Endito (1):\n      t5582: remove spurious 'cd \"$D\"' line\n\nMike Hommey (1):\n      credential: fix leak in credential_apply_config()\n\nMiriam Rubio (3):\n      t6030-bisect-porcelain: add tests to control bisect run exit cases\n      t6030-bisect-porcelain: add test for bisect visualize\n      bisect--helper: retire `--bisect-next-check` subcommand\n\nOrgad Shaneh (1):\n      doc: fix capitalization in \"git status --porcelain=v2\" description\n\nPatrick Steinhardt (16):\n      fetch-pack: speed up loading of refs via commit graph\n      revision: separate walk and unsorted flags\n      connected: do not sort input revisions\n      revision: stop retrieving reference twice\n      commit-graph: split out function to search commit position\n      revision: avoid hitting packfiles when commits are in commit-graph\n      ls-refs: reuse buffer when sending refs\n      fetch: skip formatting updated refs with `--quiet`\n      fetch: speed up lookup of want refs via commit-graph\n      fetch: avoid unpacking headers in object existence check\n      connected: refactor iterator to return next object ID directly\n      fetch-pack: optimize loading of refs via commit graph\n      fetch: refactor fetch refs to be more extendable\n      fetch: merge fetching and consuming refs\n      fetch: avoid second connectivity check if we already have all objects\n      update-ref: fix streaming of status updates\n\nPhilip Oakley (1):\n      doc: config, tell readers of `git help --config`\n\nPhilippe Blain (3):\n      test-lib-functions: use 'TEST_SHELL_PATH' in 'test_pause'\n      test-lib-functions: optionally keep HOME, TERM and SHELL in 'test_pause'\n      test-lib-functions: keep user's debugger config files and TERM in 'debug'\n\nPhillip Wood (22):\n      t3403: fix commit authorship\n      rebase --apply: restore some tests\n      rebase --continue: remove .git/MERGE_MSG\n      rebase -r: make 'merge -c' behave like reword\n      rebase -i: add another reword test\n      rebase -r: don't write .git/MERGE_MSG when fast-forwarding\n      rebase -r: fix merge -c with a merge strategy\n      t3407: run tests in $TEST_DIRECTORY\n      t3407: use test_commit\n      t3407: use test_cmp_rev\n      t3407: rename a variable\n      t3407: use test_path_is_missing\n      t3407: strengthen rebase --abort tests\n      t3407: rework rebase --quit tests\n      rebase: use our standard error return value\n      rebase: use lookup_commit_reference_by_name()\n      rebase: dereference tags\n      sequencer.c: factor out a function\n      rebase: fix todo-list rereading\n      sparse index: fix use-after-free bug in cache_tree_verify()\n      t1092: run \"rebase --apply\" without \"-q\" in testing\n      rebase -i: fix rewording with --committer-date-is-author-date\n\nPranit Bauva (2):\n      run-command: make `exists_in_PATH()` non-static\n      bisect--helper: reimplement `bisect_visualize()` shell function in C\n\nRené Scharfe (36):\n      compat: let git_mmap use malloc(3) directly\n      xopen: explicitly report creation failures\n      use xopen() to handle fatal open(2) failures\n      show-branch: simplify rev_is_head()\n      archive: convert queue_directory to struct object_id\n      branch: allow deleting dangling branches with --force\n      merge-recursive: use fspathcmp() in path_hashmap_cmp()\n      range-diff: avoid segfault with -I\n      setup: use xopen and xdup in sanitize_stdfds\n      refs/files-backend: remove unused open mode parameter\n      index-pack: use xopen in init_thread\n      oidset: make oidset_size() an inline function\n      midx: inline nth_midxed_pack_entry()\n      packfile: convert mark_bad_packed_object() to object_id\n      packfile: convert has_packed_and_bad() to object_id\n      packfile: use oidset for bad objects\n      compression: drop write-only core_compression_* variables\n      packfile: release bad_objects in close_pack()\n      test-mergesort: use strbuf_getline()\n      test-mergesort: add sort subcommand\n      test-mergesort: add test subcommand\n      test-mergesort: add generate subcommand\n      test-mergesort: add unriffle mode\n      test-mergesort: add unriffle_skewed mode\n      p0071: measure sorting of already sorted and reversed files\n      p0071: test performance of llist_mergesort()\n      mergesort: use ranks stack\n      p3400: stop using tac(1)\n      t3905: show failure to ignore sub-repo\n      read-cache: add verify_path_internal()\n      read-cache: let verify_path() reject trailing dir separators again\n      test-mergesort: use repeatable random numbers\n      perf: disable automatic housekeeping\n      add: don't write objects with --dry-run\n      gpg-interface: handle missing \" with \" gracefully in parse_ssh_output()\n      gpg-interface: avoid buffer overrun in parse_ssh_output()\n\nRobert Estelle (1):\n      completion: fix incorrect bash/zsh string equality check\n\nSZEDER Gábor (12):\n      Makefile: remove archives before manipulating them with 'ar'\n      column: fix parsing of the '--nl' option\n      test-lib: set GIT_CEILING_DIRECTORIES to protect the surrounding repository\n      t1600-index: remove unnecessary redirection\n      t1600-index: don't run git commands upstream of a pipe\n      t1600-index: disable GIT_TEST_SPLIT_INDEX\n      read-cache: look for shared index files next to the index, too\n      tests: disable GIT_TEST_SPLIT_INDEX for sparse index tests\n      read-cache: fix GIT_TEST_SPLIT_INDEX\n      commit-graph: fix bogus counter in \"Scanning merged commits\" progress line\n      entry: show finer-grained counter in \"Filtering content\" progress line\n      command-list.txt: remove 'sparse-index' from main help\n\nSergey Organov (1):\n      diff-index: restore -c/--cc options handling\n\nTakashi Iwai (1):\n      completion: tcsh: Fix regression by drop of wrapper functions\n\nTal Kelrich (1):\n      fast-export: fix anonymized tag using original length\n\nTanushree Tumane (1):\n      bisect--helper: reimplement `bisect_run` shell function in C\n\nTassilo Horn (1):\n      userdiff: improve java hunk header regex\n\nTaylor Blau (55):\n      pack-bitmap.c: harden 'test_bitmap_walk()' to check type bitmaps\n      pack-bitmap-write.c: gracefully fail to write non-closed bitmaps\n      pack-bitmap-write.c: free existing bitmaps\n      Documentation: describe MIDX-based bitmaps\n      object-store.h: teach for_each_packed_object to ignore kept packs\n      builtin/pack-objects.c: simplify add_objects_in_unpacked_packs()\n      builtin/pack-objects.c: remove duplicate hash lookup\n      midx: disallow running outside of a repository\n      midx: fix `*.rev` cleanups with `--object-dir`\n      midx: clear auxiliary .rev after replacing the MIDX\n      midx: reject empty `--preferred-pack`'s\n      midx: infer preferred pack when not given one\n      midx: close linked MIDXs, avoid leaking memory\n      midx: avoid opening multiple MIDXs when writing\n      pack-bitmap.c: introduce 'bitmap_num_objects()'\n      pack-bitmap.c: introduce 'nth_bitmap_object_oid()'\n      pack-bitmap.c: introduce 'bitmap_is_preferred_refname()'\n      pack-bitmap.c: avoid redundant calls to try_partial_reuse\n      pack-bitmap: read multi-pack bitmaps\n      pack-bitmap: write multi-pack bitmaps\n      t5310: move some tests to lib-bitmap.sh\n      t/helper/test-read-midx.c: add --checksum mode\n      t5326: test multi-pack bitmap behavior\n      t5319: don't write MIDX bitmaps in t5319\n      t7700: update to work with MIDX bitmap test knob\n      midx: respect 'GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP'\n      p5310: extract full and partial bitmap tests\n      p5326: perf tests for MIDX bitmaps\n      bulk-checkin.c: store checksum directly\n      pack-write.c: rename `.idx` files after `*.rev`\n      builtin/repack.c: move `.idx` files into place last\n      builtin/index-pack.c: move `.idx` files into place last\n      t/helper/test-bitmap.c: add 'dump-hashes' mode\n      pack-bitmap.c: propagate namehash values from existing bitmaps\n      midx.c: respect 'pack.writeBitmapHashcache' when writing bitmaps\n      p5326: create missing 'perf-tag' tag\n      p5326: don't set core.multiPackIndex unnecessarily\n      p5326: generate pack bitmaps before writing the MIDX bitmap\n      t5326: test propagating hashcache values\n      builtin/commit-graph.c: don't accept common --[no-]progress\n      builtin/multi-pack-index.c: disable top-level --[no-]progress\n      midx: expose `write_midx_file_only()` publicly\n      builtin/multi-pack-index.c: support `--stdin-packs` mode\n      midx: preliminary support for `--refs-snapshot`\n      builtin/repack.c: keep track of existing packs unconditionally\n      builtin/repack.c: rename variables that deal with non-kept packs\n      builtin/repack.c: extract showing progress to a variable\n      builtin/repack.c: support writing a MIDX while repacking\n      builtin/repack.c: make largest pack preferred\n      builtin/repack.c: pass `--refs-snapshot` when writing bitmaps\n      t/perf/aggregate.perl: tolerate leading spaces\n      midx.c: extract MIDX lookup by object_dir\n      midx.c: lookup MIDX by object directory during expire\n      midx.c: lookup MIDX by object directory during repack\n      midx.c: guard against commit_lock_file() failures\n\nTeng Long (1):\n      list-objects.c: rename \"traverse_trees_and_blobs\" to \"traverse_non_commits\"\n\nTodd Zullinger (1):\n      doc: add bundle-format to TECH_DOCS\n\nUSAMI Kenta (1):\n      userdiff: support enum keyword in PHP hunk header\n\nWesley Schwengle (1):\n      Document `rebase.forkpoint` in rebase man page\n\nZheNing Hu (6):\n      ref-filter: add obj-type check in grab contents\n      ref-filter: add %(raw) atom\n      ref-filter: --format=%(raw) support --perl\n      ref-filter: use non-const ref_format in *_atom_parser()\n      ref-filter: add %(rest) atom\n      cherry-pick: use better advice message\n\nZoker (1):\n      doc: fix syntax error and the format of printf\n\nbrian m. carlson (1):\n      t5607: avoid using prerequisites to select algorithm\n\nÆvar Arnfjörð Bjarmason (224):\n      pack-objects tests: cover blindspots in stdin handling\n      Makefile: move \".PHONY: cscope\" near its target\n      Makefile: add QUIET_GEN to \"cscope\" target\n      pack-objects: fix segfault in --stdin-packs option\n      test-lib tests: move \"run_sub_test\" to a new lib-subtest.sh\n      Makefile: don't use \"FORCE\" for tags targets\n      http: drop support for curl < 7.19.3 and < 7.17.0 (again)\n      http: rename CURLOPT_FILE to CURLOPT_WRITEDATA\n      bundle doc: elaborate on object prerequisites\n      bundle doc: elaborate on rev<->ref restriction\n      bundle doc: rewrite the \"DESCRIPTION\" section\n      bundle doc: replace \"basis\" with \"prerequsite(s)\"\n      serve: mark has_capability() as static\n      transport: rename \"fetch\" in transport_vtable to \"fetch_refs\"\n      transport: use designated initializers\n      serve: use designated initializers\n      serve.[ch]: don't pass \"struct strvec *keys\" to commands\n      serve: move transfer.advertiseSID check into session_id_advertise()\n      serve.c: move version line to advertise_capabilities()\n      {upload,receive}-pack tests: add --advertise-refs tests\n      serve.[ch]: remove \"serve_options\", split up --advertise-refs code\n      upload-pack: document and rename --advertise-refs\n      Makefile: remove \"cscope.out\", not \"cscope*\" in cscope.out target\n      Makefile: normalize clobbering & xargs for tags targets\n      refs/packet: add missing BUG() invocations to reflog callbacks\n      refs/files: remove unused REF_DELETING in lock_ref_oid_basic()\n      ls-remote: set packet_trace_identity(<name>)\n      rebase: emit one \"fatal\" in \"fatal: fatal: <error>\"\n      advice: remove use of global advice_add_embedded_repo\n      advice: move advice.graftFileDeprecated squashing to commit.[ch]\n      refs/files: remove unused \"extras/skip\" in lock_ref_oid_basic()\n      refs/files: remove unused \"skip\" in lock_raw_ref() too\n      refs/debug: re-indent argument list for \"prepare\"\n      refs: make repo_dwim_log() accept a NULL oid\n      refs/files: add a comment about refs_reflog_exists() call\n      reflog expire: don't lock reflogs using previously seen OID\n      refs API: remove OID argument to reflog_expire()\n      refs/files: remove unused \"oid\" in lock_ref_oid_basic()\n      refs/files: remove unused \"errno == EISDIR\" code\n      refs/files: remove unused \"errno != ENOTDIR\" condition\n      refs file backend: move raceproof_create_file() here\n      bundle API: start writing API documentation\n      commit-graph: define common usage with a macro\n      commit-graph: remove redundant handling of -h\n      commit-graph: use parse_options_concat()\n      multi-pack-index: refactor \"goto usage\" pattern\n      commit-graph: early exit to \"usage\" on !argc\n      commit-graph: show usage on \"commit-graph [write|verify] garbage\"\n      commit-graph: show \"unexpected subcommand\" error\n      protocol-caps.c: fix memory leak in send_info()\n      mailmap.c: fix a memory leak in free_mailap_{info,entry}()\n      gc: remove trailing dot from \"gc.log\" line\n      gettext: remove optional non-standard parens in N_() definition\n      bundle API: change \"flags\" to be \"extra_index_pack_args\"\n      index-pack: add --progress-title option\n      bundle: show progress on \"unbundle\"\n      tr2: remove NEEDSWORK comment for \"non-procfs\" implementations\n      tr2: clarify TRACE2_PROCESS_INFO_EXIT comment under Linux\n      tr2: stop leaking \"thread_name\" memory\n      tr2: leave the parent list empty upon failure & don't leak memory\n      tr2: do compiler enum check in trace2_collect_process_info()\n      tr2: log N parent process names on Linux\n      send-email: fix a \"first config key wins\" regression in v2.33.0\n      Makefile: remove the check_bindir script\n      pack-write: skip *.rev work when not writing *.rev\n      pack.h: line-wrap the definition of finish_tmp_packfile()\n      pack-write: refactor renaming in finish_tmp_packfile()\n      index-pack: refactor renaming in final()\n      pack-write: split up finish_tmp_packfile() function\n      pack-objects: rename .idx files into place after .bitmap files\n      help: correct the usage string in -h and documentation\n      INSTALL: don't mention the \"curl\" executable at all\n      INSTALL: reword and copy-edit the \"libcurl\" section\n      git-submodule: remove unused is_zero_oid() function\n      git-sh-setup: remove unused \"pull with rebase\" message\n      git-bisect: remove unused SHA-1 $x40 shell variable\n      test-lib: remove unused $_x40 and $_z40 variables\n      test-tool run-command: fix flip-flop init pattern\n      gc: remove unused launchctl_get_uid() call\n      parse-options API users: align usage output in C-strings\n      send-pack: properly use parse_options() API for usage string\n      git rev-parse --parseopt tests: add more usagestr tests\n      difftool: prepare \"struct child_process\" in cmd_difftool()\n      difftool: use run_command() API in run_file_diff()\n      parse-options API: remove OPTION_ARGUMENT feature\n      INSTALL: mention that we need libcurl 7.19.4 or newer to build\n      Makefile: drop support for curl < 7.9.8 (again)\n      http: drop support for curl < 7.18.0 (again)\n      http: correct version check for CURL_HTTP_VERSION_2\n      http: correct curl version check for CURLOPT_PINNEDPUBLICKEY\n      http: centralize the accounting of libcurl dependencies\n      http: don't hardcode the value of CURL_SOCKOPT_OK\n      wrapper.c: add x{un,}setenv(), and use xsetenv() in environment.c\n      environment.c: remove test-specific \"ignore_untracked...\" variable\n      read-cache & fetch-negotiator: check \"enum\" values in switch()\n      repo-settings.c: simplify the setup\n      repository.h: don't use a mix of int and bitfields\n      Makefile: clean .depend dirs under COMPUTE_HEADER_DEPENDENCIES != yes\n      parse-options: properly align continued usage output\n      test-lib tests: split up \"write and run\" into two functions\n      test-lib tests: don't provide a description for the sub-tests\n      test-lib tests: avoid subshell for \"test_cmp\" for readability\n      test-lib tests: refactor common part of check_sub_test_lib_test*()\n      test-lib tests: assert 1 exit code, not non-zero\n      test-lib tests: get rid of copy/pasted mock test code\n      Makefile: make the \"sparse\" target non-.PHONY\n      Makefile: make COMPUTE_HEADER_DEPENDENCIES=auto work with DEVOPTS=pedantic\n      help: correct usage & behavior of \"git help --guides\"\n      help tests: add test for --config output\n      help: correct logic error in combining --all and --config\n      help: correct logic error in combining --all and --guides\n      help: simplify by moving to OPT_CMDMODE()\n      help tests: test --config-for-completion option & output\n      help / completion: make \"git help\" do the hard work\n      help: move column config discovery to help.c library\n      Makefile: add SANITIZE=leak flag to GIT-BUILD-OPTIONS\n      tests: add a test mode for SANITIZE=leak, run it in CI\n      bundle: remove ignored & undocumented \"--verbose\" flag\n      Makefile: mark \"check\" target as .PHONY\n      Makefile: stop hardcoding {command,config}-list.h\n      Makefile: don't perform \"mv $@+ $@\" dance for $(GENERATED_H)\n      Makefile: remove an out-of-date comment\n      hook.[ch]: move find_hook() from run-command.c to hook.c\n      hook.c users: use \"hook_exists()\" instead of \"find_hook()\"\n      hook-list.h: add a generated list of hooks, like config-list.h\n      http: check CURLE_SSL_PINNEDPUBKEYNOTMATCH when emitting errors\n      Makefile: pass -Wno-pendantic under GENERATE_COMPILATION_DATABASE=yes\n      submodule-config.h: remove unused SUBMODULE_INIT macro\n      *.[ch] *_INIT macros: use { 0 } for a \"zero out\" idiom\n      *.h _INIT macros: don't specify fields equal to 0\n      *.h: move some *_INIT to designated initializers\n      cbtree.h: define cb_init() in terms of CBTREE_INIT\n      daemon.c: refactor hostinfo_init() to HOSTINFO_INIT macro\n      builtin/blame.c: refactor commit_info_init() to COMMIT_INFO_INIT macro\n      string-list.[ch]: remove string_list_init() compatibility function\n      config.c: remove unused git_config_key_is_valid()\n      refs.[ch]: remove unused ref_storage_backend_exists()\n      refs/ref-cache.[ch]: remove unused remove_entry_from_dir()\n      refs/ref-cache.[ch]: remove unused add_ref_entry()\n      refs/ref-cache.c: remove \"mkdir\" parameter from find_containing_dir()\n      refs/ref-cache.[ch]: remove \"incomplete\" from create_dir_entry()\n      parse-options.h: move PARSE_OPT_SHELL_EVAL between enums\n      urlmatch.[ch]: add and use URLMATCH_CONFIG_INIT\n      builtin/remote.c: add and use a REF_STATES_INIT\n      builtin/remote.c: add and use SHOW_INFO_INIT\n      builtin.h: remove cmd_tar_tree() declaration\n      grep.h: remove unused grep_threads_ok() declaration\n      log-tree.h: remove unused function declarations\n      config.h: remove unused git_config_get_untracked_cache() declaration\n      fsck tests: add test for fsck-ing an unknown type\n      fsck tests: refactor one test to use a sub-repo\n      fsck tests: test current hash/type mismatch behavior\n      fsck tests: test for garbage appended to a loose object\n      cat-file tests: move bogus_* variable declarations earlier\n      cat-file tests: test for missing/bogus object with -t, -s and -p\n      cat-file tests: add corrupt loose object test\n      cat-file tests: test for current --allow-unknown-type behavior\n      object-file.c: don't set \"typep\" when returning non-zero\n      object-file.c: return -1, not \"status\" from unpack_loose_header()\n      object-file.c: make parse_loose_header_extended() public\n      object-file.c: simplify unpack_loose_short_header()\n      object-file.c: use \"enum\" return type for unpack_loose_header()\n      object-file.c: return ULHR_TOO_LONG on \"header too long\"\n      object-file.c: stop dying in parse_loose_header()\n      fsck: don't hard die on invalid object types\n      fsck: report invalid object type-path combinations\n      unpack-trees: don't leak memory in verify_clean_subdirectory()\n      tests: fix a memory leak in test-prio-queue.c\n      tests: fix a memory leak in test-parse-options.c\n      tests: fix a memory leak in test-oidtree.c\n      tests: fix test-oid-array leak, test in SANITIZE=leak\n      ls-files: fix a trivial dir_clear() leak\n      ls-files: add missing string_list_clear()\n      merge: add missing strbuf_release()\n      parse-options.[ch]: consistently use \"enum parse_opt_flags\"\n      parse-options.[ch]: consistently use \"enum parse_opt_result\"\n      parse-options.c: use exhaustive \"case\" arms for \"enum parse_opt_result\"\n      parse-options.h: make the \"flags\" in \"struct option\" an enum\n      parse-options.c: move optname() earlier in the file\n      commit-graph: stop using optname()\n      parse-options.[ch]: make opt{bug,name}() \"static\"\n      parse-options tests: test optname() output\n      parse-options: change OPT_{SHORT,UNSET} to an enum\n      unwritable tests: assert exact error output\n      commit: fix duplication regression in permission error output\n      leak tests: run various built-in tests in t00*.sh SANITIZE=leak\n      leak tests: run various \"test-tool\" tests in t00*.sh SANITIZE=leak\n      leak tests: mark all ls-tree tests as passing with SANITIZE=leak\n      leak tests: mark all trace2 tests as passing with SANITIZE=leak\n      leak tests: mark all checkout-index tests as passing with SANITIZE=leak\n      leak tests: mark some ls-files tests as passing with SANITIZE=leak\n      leak tests: mark some read-tree tests as passing with SANITIZE=leak\n      leak tests: mark various \"generic\" tests as passing with SANITIZE=leak\n      leak tests: mark some misc tests as passing with SANITIZE=leak\n      sequencer: add a \"goto cleanup\" to do_reset()\n      sequencer: fix a memory leak in do_reset()\n      test-lib.sh: de-duplicate error() teardown code\n      test-lib.sh: use \"Bail out!\" syntax on bad SANITIZE=leak use\n      test-lib.sh: try to re-chmod & retry on failed trash removal\n      commit-graph tests: fix error-hiding graph_git_two_modes() helper\n      commit-graph tests: fix another graph_git_two_modes() helper\n      commit-graph: don't consider \"replace\" objects with \"verify\"\n      \"lib-diff\" tests: make \"README\" and \"COPYING\" test data smaller\n      tests: stop using top-level \"README\" and \"COPYING\" files\n      doc lint: fix error-hiding regression\n      doc lint: emit errors on STDERR\n      doc build: speed up \"make lint-docs\"\n      doc lint: make \"lint-docs\" non-.PHONY\n      pkt-line.[ch]: remove unused packet_buf_write_len()\n      pkt-line.[ch]: remove unused packet_read_line_buf()\n      git config doc: fix recent ASCIIDOC formatting regression\n      tag: use a \"goto cleanup\" pattern, leak less memory\n      ref-filter API user: add and use a ref_sorting_release()\n      branch: use ref_sorting_release()\n      git-sh-i18n: remove unused eval_ngettext()\n      git-sh-setup: remove messaging supporting --preserve-merges\n      Makefile: remove redundant GIT-CFLAGS dependency from \"sparse\"\n      config.c: don't leak memory in handle_path_include()\n      grep: prefer \"struct grep_opt\" over its \"void *\" equivalent\n      grep: use object_array_clear() in cmd_grep()\n      grep: fix a \"path_list\" memory leak\n      clone: fix a memory leak of the \"git_dir\" variable\n      submodule--helper: fix small memory leaks\n      reflog: free() ref given to us by dwim_log()\n\nĐoàn Trần Công Danh (3):\n      t6300: don't run cat-file on non-existent object\n      t6300: check for cat-file exit status code\n      diff-lib: ignore paths that are outside $cwd if --relative asked\n\n"},{"id":"440715","messageId":"defd82c5-a197-d52e-8386-c54d7d8e0770@gmail.com","threadId":"56835","inReplyTo":"xmqqsfwc4yne.fsf@gitster.g","subject":"Re: [ANNOUNCE] Git v2.34.0-rc1","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2021-11-09T01:41:19Z","receivedAt":"2021-11-09T01:41:25Z","isPatch":false,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"On 11/3/2021 7:17 PM, Junio C Hamano wrote:\n>  * Drop \"git sparse-index\" from the list of common commands.\n>    (merge 6a9a50a8af sg/sparse-index-not-that-common-a-command later to maint).\nLate correction for the release notes: this should be\n\n  * Drop \"git sparse-checkout\" from the list of common commands.\n\nIt's confusing because 6a9a50a8af (command-list.txt: remove 'sparse-index'\nfrom main help, 2021-10-24) is the source of the typo and I didn't catch\nit, either.\n\nThanks,\n-Stolee\n"},{"id":"440758","messageId":"xmqqfss52ni5.fsf@gitster.g","threadId":"56835","inReplyTo":"defd82c5-a197-d52e-8386-c54d7d8e0770@gmail.com","subject":"Re: [ANNOUNCE] Git v2.34.0-rc1","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2021-11-09T18:27:14Z","receivedAt":"2021-11-09T18:27:20Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Derrick Stolee <stolee@gmail.com> writes:\n\n> On 11/3/2021 7:17 PM, Junio C Hamano wrote:\n>>  * Drop \"git sparse-index\" from the list of common commands.\n>>    (merge 6a9a50a8af sg/sparse-index-not-that-common-a-command later to maint).\n> Late correction for the release notes: this should be\n>\n>   * Drop \"git sparse-checkout\" from the list of common commands.\n>\n> It's confusing because 6a9a50a8af (command-list.txt: remove 'sparse-index'\n> from main help, 2021-10-24) is the source of the typo and I didn't catch\n> it, either.\n\nThanks.\n"}]}