Subject: [ANNOUNCE] Git v2.33.0

From: Junio C Hamano <[email-masked]>
Date: Mon, 16 Aug 2021 16:06:13 -0700

The latest feature release Git v2.33.0 is now available at the
usual places.  It is comprised of 449 non-merge commits since
v2.32.0, contributed by 74 people, 19 of which are new faces [*].

As can be seen here, it turns out that this release does not have
many end-user facing changes and new features, but a lot of fixes
and internal improvements went into the codebase during this cycle.
Also, preparation for a new merge strategy backend (can be used with
"git merge -sort" today) is on its final stretch and we are hoping
that it can become the default in the next release.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.33.0'
tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.32.0 are as follows.
Welcome to the Git development community!

  Anders Höckersten, Andrew Berry, Andy AO, Beshr Kayali,
  dorgon.chang, edef, Fabian Stelzer, Fabian Wermelinger, Gregory
  Anders, Greg Pflaum, Hu Jialun, Jason Hatton, Julian Verdurmen,
  Matthew Hughes, Michael Schindler, Reuven Y, Stephen Manz,
  Tao Klerks, and Teng Long.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Henrie,
  Anders Kaseorg, Andrei Rybak, Andrzej Hunt, Atharva Raykar,
  Bagas Sanjaya, brian m. carlson, Carlo Marcelo Arenas Belón,
  Christian Couder, Christopher Diaz Riveros, Daniel Santos,
  Dennis Ameling, Denton Liu, Derrick Stolee, Đoàn Trần Công
  Danh, Elijah Newren, Emily Shaffer, Emir Sarı, Eric Sunshine,
  Eric Wong, Fangyi Zhou, Felipe Contreras, Han-Wen Nienhuys,
  Jean-Noël Avila, Jeff King, Jiang Xin, Johannes Schindelin,
  Jonathan Nieder, Jonathan Tan, Jordi Mas, Josh Steadmon, Junio C
  Hamano, Kaartic Sivaraam, Martin Ågren, Matheus Tavares, Matthew
  Rogers, Matthias Aßhauer, Nicolas Pitre, Patrick Steinhardt,
  Peter Krefting, Philippe Blain, Ralf Thielow, René Scharfe,
  Sergey Organov, Shourya Shukla, Taylor Blau, Thomas Bétous,
  Thomas Braun, Trần Ngọc Quân, Wolfgang Müller, Yi-Jyun Pan,
  ZheNing Hu, and 依云.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git 2.33 Release Notes
======================

Updates since Git 2.32
----------------------

UI, Workflows & Features

 * "git send-email" learned the "--sendmail-cmd" command line option
   and the "sendemail.sendmailCmd" configuration variable, which is a
   more sensible approach than the current way of repurposing the
   "smtp-server" that is meant to name the server to instead name the
   command to talk to the server.

 * The userdiff pattern for C# learned the token "record".

 * "git rev-list" learns to omit the "commit <object-name>" header
   lines from the output with the `--no-commit-header` option.

 * "git worktree add --lock" learned to record why the worktree is
   locked with a custom message.

Performance, Internal Implementation, Development Support etc.

 * The code to handle the "--format" option in "for-each-ref" and
   friends made too many string comparisons on %(atom)s used in the
   format string, which has been corrected by converting them into
   enum when the format string is parsed.

 * Use the hashfile API in the codepath that writes the index file to
   reduce code duplication.

 * Repeated rename detections in a sequence of mergy operations have
   been optimized out for the 'ort' merge strategy.

 * Preliminary clean-up of tests before the main reftable changes
   hits the codebase.

 * The backend for "diff -G/-S" has been updated to use pcre2 engine
   when available.

 * Use ".DELETE_ON_ERROR" pseudo target to simplify our Makefile.

 * Code cleanup around struct_type_init() functions.

 * "git send-email" optimization.

 * GitHub Actions / CI update.
   (merge 0dc787a9f2 js/ci-windows-update later to maint).

 * Object accesses in repositories with many alternate object store
   have been optimized.

 * "git log" has been optimized not to waste cycles to load ref
   decoration data that may not be needed.

 * Many "printf"-like helper functions we have have been annotated
   with __attribute__() to catch placeholder/parameter mismatches.

 * Tests that cover protocol bits have been updated and helpers
   used there have been consolidated.

 * The CI gained a new job to run "make sparse" check.

 * "git status" codepath learned to work with sparsely populated index
   without hydrating it fully.

 * A guideline for gender neutral documentation has been added.

 * Documentation on "git diff -l<n>" and diff.renameLimit have been
   updated, and the defaults for these limits have been raised.

 * The completion support used to offer alternate spelling of options
   that exist only for compatibility, which has been corrected.

 * "TEST_OUTPUT_DIRECTORY=there make test" failed to work, which has
   been corrected.

 * "git bundle" gained more test coverage.

 * "git read-tree" had a codepath where blobs are fetched one-by-one
   from the promisor remote, which has been corrected to fetch in bulk.

 * Rewrite of "git submodule" in C continues.

 * "git checkout" and "git commit" learn to work without unnecessarily
   expanding sparse indexes.

Fixes since v2.32
-----------------

 * We historically rejected a very short string as an author name
   while accepting a patch e-mail, which has been loosened.
   (merge 72ee47ceeb ef/mailinfo-short-name later to maint).

 * The parallel checkout codepath did not initialize object ID field
   used to talk to the worker processes in a futureproof way.

 * Rewrite code that triggers undefined behaviour warning.
   (merge aafa5df0df jn/size-t-casted-to-off-t-fix later to maint).

 * The description of "fast-forward" in the glossary has been updated.
   (merge e22f2daed0 ry/clarify-fast-forward-in-glossary later to maint).

 * Recent "git clone" left a temporary directory behind when the
   transport layer returned an failure.
   (merge 6aacb7d861 jk/clone-clean-upon-transport-error later to maint).

 * "git fetch" over protocol v2 left its side of the socket open after
   it finished speaking, which unnecessarily wasted the resource on
   the other side.
   (merge ae1a7eefff jk/fetch-pack-v2-half-close-early later to maint).

 * The command line completion (in contrib/) learned that "git diff"
   takes the "--anchored" option.
   (merge d1e7c2cac9 tb/complete-diff-anchored later to maint).

 * "git-svn" tests assumed that "locale -a", which is used to pick an
   available UTF-8 locale, is available everywhere.  A knob has been
   introduced to allow testers to specify a suitable locale to use.
   (merge 482c962de4 dd/svn-test-wo-locale-a later to maint).

 * Update "git subtree" to work better on Windows.
   (merge 77f37de39f js/subtree-on-windows-fix later to maint).

 * Remove multimail from contrib/
   (merge f74d11471f js/no-more-multimail later to maint).

 * Make the codebase MSAN clean.
   (merge 4dbc55e87d ah/uninitialized-reads-fix later to maint).

 * Work around inefficient glob substitution in older versions of bash
   by rewriting parts of a test.
   (merge eb87c6f559 jx/t6020-with-older-bash later to maint).

 * Avoid duplicated work while building reachability bitmaps.
   (merge aa9ad6fee5 jk/bitmap-tree-optim later to maint).

 * We broke "GIT_SKIP_TESTS=t?000" to skip certain tests in recent
   update, which got fixed.

 * The side-band demultiplexer that is used to display progress output
   from the remote end did not clear the line properly when the end of
   line hits at a packet boundary, which has been corrected.

 * Some test scripts assumed that readlink(1) was universally
   installed and available, which is not the case.
   (merge 7c0afdf23c jk/test-without-readlink-1 later to maint).

 * Recent update to completion script (in contrib/) broke those who
   use the __git_complete helper to define completion to their custom
   command.
   (merge cea232194d fw/complete-cmd-idx-fix later to maint).

 * Output from some of our tests were affected by the width of the
   terminal that they were run in, which has been corrected by
   exporting a fixed value in the COLUMNS environment.
   (merge c49a177bec ab/fix-columns-to-80-during-tests later to maint).

 * On Windows, mergetool has been taught to find kdiff3.exe just like
   it finds winmerge.exe.
   (merge 47eb4c6890 ms/mergetools-kdiff3-on-windows later to maint).

 * When we cannot figure out how wide the terminal is, we use a
   fallback value of 80 ourselves (which cannot be avoided), but when
   we run the pager, we export it in COLUMNS, which forces the pager
   to use the hardcoded value, even when the pager is perfectly
   capable to figure it out itself.  Stop exporting COLUMNS when we
   fall back on the hardcoded default value for our own use.
   (merge 9b6e2c8b98 js/stop-exporting-bogus-columns later to maint).

 * "git cat-file --batch-all-objects"" misbehaved when "--batch" is in
   use and did not ask for certain object traits.
   (merge ee02ac6164 zh/cat-file-batch-fix later to maint).

 * Some code and doc clarification around "git push".

 * The "union" conflict resultion variant misbehaved when used with
   binary merge driver.
   (merge 382b601acd jk/union-merge-binary later to maint).

 * Prevent "git p4" from failing to submit changes to binary file.
   (merge 54662d5958 dc/p4-binary-submit-fix later to maint).

 * "git grep --and -e foo" ought to have been diagnosed as an error
   but instead segfaulted, which has been corrected.
   (merge fe7fe62d8d rs/grep-parser-fix later to maint).

 * The merge code had funny interactions between content based rename
   detection and directory rename detection.
   (merge 3585d0ea23 en/merge-dir-rename-corner-case-fix later to maint).

 * When rebuilding the multi-pack index file reusing an existing one,
   we used to blindly trust the existing file and ended up carrying
   corrupted data into the updated file, which has been corrected.
   (merge f89ecf7988 tb/midx-use-checksum later to maint).

 * Update the location of system-side configuration file on Windows.
   (merge e355307692 js/gfw-system-config-loc-fix later to maint).

 * Code recently added to support common ancestry negotiation during
   "git push" did not sanity check its arguments carefully enough.
   (merge eff40457a4 ab/fetch-negotiate-segv-fix later to maint).

 * Update the documentation not to assume users are of certain gender
   and adds to guidelines to do so.
   (merge 46a237f42f ds/gender-neutral-doc later to maint).

 * "git commit --allow-empty-message" won't abort the operation upon
   an empty message, but the hint shown in the editor said otherwise.
   (merge 6f70f00b4f hj/commit-allow-empty-message later to maint).

 * The code that gives an error message in "git multi-pack-index" when
   no subcommand is given tried to print a NULL pointer as a strong,
   which has been corrected.
   (merge 88617d11f9 tb/reverse-midx later to maint).

 * CI update.
   (merge a066a90db6 js/ci-check-whitespace-updates later to maint).

 * Documentation fix for "git pull --rebase=no".
   (merge d3236becec fc/pull-no-rebase-merges-theirs-into-ours later to maint).

 * A race between repacking and using pack bitmaps has been corrected.
   (merge dc1daacdcc jk/check-pack-valid-before-opening-bitmap later to maint).

 * The local changes stashed by "git merge --autostash" were lost when
   the merge failed in certain ways, which has been corrected.

 * Windows rmdir() equivalent behaves differently from POSIX ones in
   that when used on a symbolic link that points at a directory, the
   target directory gets removed, which has been corrected.
   (merge 3e7d4888e5 tb/mingw-rmdir-symlink-to-directory later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge bfe35a6165 ah/doc-describe later to maint).
   (merge f302c1e4aa jc/clarify-revision-range later to maint).
   (merge 3127ff90ea tl/fix-packfile-uri-doc later to maint).
   (merge a84216c684 jk/doc-color-pager later to maint).
   (merge 4e0a64a713 ab/trace2-squelch-gcc-warning later to maint).
   (merge 225f7fa847 ps/rev-list-object-type-filter later to maint).
   (merge 5317dfeaed dd/honor-users-tar-in-tests later to maint).
   (merge ace6d8e3d6 tk/partial-clone-repack-doc later to maint).
   (merge 7ba68e0cf1 js/trace2-discard-event-docfix later to maint).
   (merge 8603c419d3 fc/doc-default-to-upstream-config later to maint).
   (merge 1d72b604ef jk/revision-squelch-gcc-warning later to maint).
   (merge abcb66c614 ar/typofix later to maint).
   (merge 9853830787 ah/graph-typofix later to maint).
   (merge aac578492d ab/config-hooks-path-testfix later to maint).
   (merge 98c7656a18 ar/more-typofix later to maint).
   (merge 6fb9195f6c jk/doc-max-pack-size later to maint).
   (merge 4184cbd635 ar/mailinfo-memcmp-to-skip-prefix later to maint).
   (merge 91d2347033 ar/doc-libera-chat-in-my-first-contrib later to maint).
   (merge 338abb0f04 ab/cmd-foo-should-return later to maint).
   (merge 546096a5cb ab/xdiff-bug-cleanup later to maint).
   (merge b7b793d1e7 ab/progress-cleanup later to maint).
   (merge d94f9b8e90 ba/object-info later to maint).
   (merge 52ff891c03 ar/test-code-cleanup later to maint).
   (merge a0538e5c8b dd/document-log-decorate-default later to maint).
   (merge ce24797d38 mr/cmake later to maint).
   (merge 9eb542f2ee ab/pre-auto-gc-hook-test later to maint).
   (merge 9fffc38583 bk/doc-commit-typofix later to maint).
   (merge 1cf823d8f0 ks/submodule-cleanup later to maint).
   (merge ebbf5d2b70 js/config-mak-windows-pcre-fix later to maint).
   (merge 617480d75b hn/refs-iterator-peel-returns-boolean later to maint).
   (merge 6a24cc71ed ar/submodule-helper-include-cleanup later to maint).
   (merge 5632e838f8 rs/khash-alloc-cleanup later to maint).
   (merge b1d87fbaf1 jk/typofix later to maint).
   (merge e04170697a ab/gitignore-discovery-doc later to maint).
   (merge 8232a0ff48 dl/packet-read-response-end-fix later to maint).
   (merge eb448631fb dl/diff-merge-base later to maint).
   (merge c510928a25 hn/refs-debug-empty-prefix later to maint).
   (merge ddcb189d9d tb/bitmap-type-filter-comment-fix later to maint).
   (merge 878b399734 pb/submodule-recurse-doc later to maint).
   (merge 734283855f jk/config-env-doc later to maint).
   (merge 482e1488a9 ab/getcwd-test later to maint).
   (merge f0b922473e ar/doc-markup-fix later to maint).

----------------------------------------------------------------

Changes since v2.32.0 are as follows:

Alex Henrie (6):
      merge: don't translate literal commands
      stash: don't translate literal commands
      submodule: use the imperative mood to describe the --files option
      fetch: improve grammar of "shallow roots" message
      setup: split "extensions found" messages into singular and plural
      graph: improve grammar of "invalid color" error message

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (5227t)

Anders Höckersten (1):
      describe-doc: clarify default length of abbreviation

Andrei Rybak (8):
      t: fix whitespace around &&
      mailinfo: use starts_with() when checking scissors
      *: fix typos which duplicate a word
      blame: correct name of config option in docs
      t: fix typos in test messages
      git-worktree.txt: fix typo in example path
      help: convert git_cmd to page in one place
      Documentation: render special characters correctly

Andrew Berry (1):
      docs: .gitignore parsing is to the top of the repo

Andrzej Hunt (15):
      bulk-checkin: make buffer reuse more obvious and safer
      split-index: use oideq instead of memcmp to compare object_id's
      builtin/checkout--worker: zero-initialise struct to avoid MSAN complaints
      fmt-merge-msg: free newly allocated temporary strings when done
      environment: move strbuf into block to plug leak
      builtin/submodule--helper: release unused strbuf to avoid leak
      builtin/for-each-repo: remove unnecessary argv copy to plug leak
      diffcore-rename: move old_dir/new_dir definition to plug leak
      ref-filter: also free head for ATOM_HEAD to avoid leak
      read-cache: call diff_setup_done to avoid leak
      convert: release strbuf to avoid leak
      builtin/mv: free or UNLEAK multiple pointers at end of cmd_mv
      builtin/merge: free found_ref when done
      builtin/rebase: fix options.strategy memory lifecycle
      reset: clear_unpack_trees_porcelain to plug leak

Atharva Raykar (6):
      MyFirstContribution: link #git-devel to Libera Chat
      submodule--helper: remove redundant include
      t7400: test failure to add submodule in tracked path
      submodule: prefix die messages with 'fatal'
      submodule--helper: refactor module_clone()
      submodule--helper: introduce add-clone subcommand

Bagas Sanjaya (5):
      l10n: id.po: fix mismatched variable names
      diff: --pickaxe-all typofix
      l10n: id: po-id for 2.33.0 (round 1)
      l10n: id: mismatch variable name fixes
      l10n: id: po-id for 2.33.0 round 2

Beshr Kayali (1):
      Documentation: fix typo in the --patch option of the commit command

Carlo Marcelo Arenas Belón (4):
      config.mak.uname: PCRE1 cleanup
      t7508: avoid non POSIX BRE
      oidtree: avoid nested struct oidtree_node
      object-store: avoid extra ';' from KHASH_INIT

Christopher Diaz Riveros (1):
      l10n: es: 2.33.0 round 2

Daniel Santos (12):
      l10n: pt_PT: add Portuguese translations part 4
      l10n: pt_PT: add Portuguese translations part 5
      l10n: pt_PT: translation tables
      l10n: pt_PT: remove trailing comments
      l10n: pt_PT: update git-po-helper
      l10n: pt_PT: translated git v2.33.0
      l10n: pt_PT: update translation tables
      l10n: pt_PT: cleaning duplicate translations
      l10n: pt_PT: cleaning flags mismatch
      l10n: pt_PT: update translation table
      l10n: pt_PT: git-po-helper update
      l10n: pt_PT: v2.33.0 round 2

Dennis Ameling (2):
      cmake(windows): set correct path to the system Git config
      ci (vs-build): build with NO_GETTEXT

Denton Liu (2):
      pkt-line: replace "stateless separator" with "response end"
      git-diff: fix missing --merge-base docs

Derrick Stolee (28):
      hashfile: use write_in_full()
      csum-file.h: increase hashfile buffer size
      read-cache: use hashfile instead of git_hash_ctx
      read-cache: delete unused hashing methods
      *: fix typos
      sparse-index: skip indexes with unmerged entries
      sparse-index: include EXTENDED flag when expanding
      t1092: replace incorrect 'echo' with 'cat'
      t1092: expand repository data shape
      t1092: add tests for status/add and sparse files
      unpack-trees: preserve cache_bottom
      unpack-trees: compare sparse directories correctly
      unpack-trees: rename unpack_nondirectories()
      unpack-trees: unpack sparse directory entries
      dir.c: accept a directory as part of cone-mode patterns
      diff-lib: handle index diffs with sparse dirs
      status: skip sparse-checkout percentage with sparse-index
      status: use sparse-index throughout
      wt-status: expand added sparse directory entries
      fsmonitor: integrate with sparse index
      t1092: document bad sparse-checkout behavior
      p2000: add 'git checkout -' test and decrease depth
      p2000: compress repo names
      commit: integrate with sparse-index
      sparse-index: recompute cache-tree
      checkout: stop expanding sparse indexes
      t1092: document bad 'git checkout' behavior
      unpack-trees: resolve sparse-directory/file conflicts

Elijah Newren (36):
      t6423: rename file within directory that other side renamed
      Documentation/technical: describe remembering renames optimization
      fast-rebase: change assert() to BUG()
      fast-rebase: write conflict state to working tree, index, and HEAD
      t6429: testcases for remembering renames
      merge-ort: add data structures for in-memory caching of rename detection
      merge-ort: populate caches of rename detection results
      merge-ort: add code to check for whether cached renames can be reused
      merge-ort: avoid accidental API mis-use
      merge-ort: preserve cached renames for the appropriate side
      merge-ort: add helper functions for using cached renames
      merge-ort: handle interactions of caching and rename/rename(1to1) cases
      merge-ort, diffcore-rename: employ cached renames when possible
      merge-ort: replace string_list_df_name_compare with faster alternative
      diffcore-rename: avoid unnecessary strdup'ing in break_idx
      Fix various issues found in comments
      merge-ort: miscellaneous touch-ups
      promisor-remote: output trace2 statistics for number of objects fetched
      t6421: add tests checking for excessive object downloads during merge
      diffcore-rename: allow different missing_object_cb functions
      diffcore-rename: use a different prefetch for basename comparisons
      merge-ort: add prefetching for content merges
      t6423: test directory renames causing rename-to-self
      merge-ort: ensure we consult df_conflict and path_conflicts
      merge-recursive: handle rename-to-self case
      diff: correct warning message when renameLimit exceeded
      doc: clarify documentation for rename/copy limits
      diffcore-rename: treat a rename_limit of 0 as unlimited
      rename: bump limit defaults yet again
      merge-ort: resolve paths early when we have sufficient information
      merge-ort: add some more explanations in collect_merge_info_callback()
      merge-ort: add data structures for allowable trivial directory resolves
      merge-ort: add a handle_deferred_entries() helper function
      merge-ort: defer recursing into directories when merge base is matched
      merge-ort: avoid recursing into directories when we don't need to
      merge-ort: restart merge with cached renames to reduce process entry cost

Emir Sarı (2):
      l10n: tr: v2.33.0 round 1
      l10n: tr: v2.33 (round 2)

Eric Wong (6):
      xmmap: inform Linux users of tuning knobs on ENOMEM
      speed up alt_odb_usable() with many alternates
      avoid strlen via strbuf_addstr in link_alt_odb_entry
      make object_directory.loose_objects_subdir_seen a bitmap
      oidcpy_with_padding: constify `src' arg
      oidtree: a crit-bit tree for odb_loose_cache

Fabian Wermelinger (1):
      completion: bash: fix late declaration of __git_cmd_idx

Fangyi Zhou (1):
      l10n: zh_CN: Revision for git v2.32.0 l10n round 1

Felipe Contreras (33):
      doc: refactor common asciidoc dependencies
      doc: improve asciidoc dependencies
      doc: remove unnecessary rm instances
      doc: simplify Makefile using .DELETE_ON_ERROR
      doc: avoid using rm directly
      push: rename !triangular to same_remote
      push: hedge code of default=simple
      push: copy code to setup_push_simple()
      push: reorganize setup_push_simple()
      push: simplify setup_push_simple()
      push: remove unused code in setup_push_upstream()
      doc: push: explain default=simple correctly
      push: create new get_upstream_ref() helper
      push: return immediately in trivial switch case
      push: split switch cases
      push: factor out null branch check
      push: only get the branch when needed
      push: make setup_push_* return the dst
      push: trivial simplifications
      push: get rid of all the setup_push_* functions
      push: factor out the typical case
      push: remove redundant check
      push: remove trivial function
      push: only check same_remote when needed
      push: don't get a full remote object
      doc: merge: mention default of defaulttoupstream
      doc: avoid using the gender of other people
      comments: avoid using the gender of our users
      pull: cleanup autostash check
      pull: trivial cleanup
      pull: trivial whitespace style fix
      doc: pull: fix rebase=false documentation
      test: fix for COLUMNS and bash 5

Gregory Anders (1):
      git-send-email: add option to specify sendmail command

Han-Wen Nienhuys (26):
      refs: make explicit that ref_iterator_peel returns boolean
      t4202: split testcase for invalid HEAD symref and HEAD hash
      t/helper/ref-store: initialize oid in resolve-ref
      t9300: check ref existence using test-helper rather than a file system check
      t5601: read HEAD using rev-parse
      t1401: use tar to snapshot and restore repo state
      t1401-symbolic-ref: avoid direct filesystem access
      t1413: use tar to save and restore entire .git directory
      t1301: fix typo in error message
      t5000: reformat indentation to the latest fashion
      t5000: inspect HEAD using git-rev-parse
      t7003: use rev-parse rather than FS inspection
      t5304: restyle: trim empty lines, drop ':' before >
      t5304: use "reflog expire --all" to clear the reflog
      test-lib: provide test prereq REFFILES
      t1407: require REFFILES for for_each_reflog test
      t1414: mark corruption test with REFFILES
      t2017: mark --orphan/logAllRefUpdates=false test as REFFILES
      t1404: mark tests that muck with .git directly as REFFILES.
      t7900: stop checking for loose refs
      t7003: check reflog existence only for REFFILES
      t4202: mark bogus head hash test with REFFILES
      t1415: set REFFILES for test specific to storage format
      t1415: avoid direct filesystem access for writing refs
      t7509: avoid direct file access for writing CHERRY_PICK_HEAD
      refs/debug: quote prefix

Hu Jialun (2):
      commit: reorganise commit hint strings
      commit: remove irrelavent prompt on `--allow-empty-message`

Jean-Noël Avila (5):
      help: fix small typo in error message
      l10n: fr: fix typo
      l10n: fr.po v2.33 rnd 1
      l10n: fr.po fix typos in commands and variables
      l10n: fr.po v2.33 rnd 2

Jeff King (27):
      clone: clean up directory after transport_fetch_refs() failure
      fetch-pack: signal v2 server that we are done making requests
      doc: explain the use of color.pager
      doc: warn people against --max-pack-size
      ll_binary_merge(): handle XDL_MERGE_FAVOR_UNION
      ll_union_merge(): pass name labels to ll_xdl_merge()
      ll_union_merge(): rename path_unused parameter
      add_pending_object_with_path(): work around "gcc -O3" complaint
      bitmaps: don't recurse into trees already in the bitmap
      t: use portable wrapper for readlink(1)
      pretty.h: update and expand docstring for userformat_find_requirements()
      log: avoid loading decorations for userformats that don't need it
      object.h: expand docstring for lookup_unknown_object()
      object.h: add lookup_object_by_type() function
      load_ref_decorations(): avoid parsing non-tag objects
      add_ref_decoration(): rename s/type/deco_type/
      test-lib: avoid accidental globbing in match_pattern_list()
      doc/rev-list-options: fix duplicate word typo
      load_ref_decorations(): fix decoration with tags
      t0000: clear GIT_SKIP_TESTS before running sub-tests
      doc/git-config: explain --file instead of referring to GIT_CONFIG
      doc/git-config: clarify GIT_CONFIG environment variable
      doc/git-config: simplify "override" advice for FILES section
      pack-bitmap: check pack validity when opening bitmap
      submodule: drop unused sm_name parameter from show_fetch_remotes()
      ci: run "apt-get update" before "apt-get install"
      ci/install-dependencies: handle "sparse" job package installs

Jiang Xin (11):
      t6020: fix incompatible parameter expansion
      sideband: don't lose clear-to-eol at packet boundary
      test: compare raw output, not mangle tabs and spaces
      test: refactor to use "test_commit" to create commits
      test: refactor to use "get_abbrev_oid" to get abbrev oid
      l10n: fixed tripple-letter typos
      l10n: git.pot: v2.33.0 round 1 (38 new, 15 removed)
      l10n: git.pot: v2.33.0 round 2 (11 new, 8 removed)
      l10n: README: refactor to use GFM syntax
      l10n: zh_CN: for git v2.33.0 l10n round 2
      l10n: TEAMS: change Simplified Chinese team leader

Johannes Schindelin (15):
      multimail: stop shipping a copy
      subtree: fix the GIT_EXEC_PATH sanity check to work on Windows
      subtree: fix assumption about the directory separator
      pager: avoid setting COLUMNS when we're guessing its value
      mingw: move Git for Windows' system config where users expect it
      config: normalize the path of the system gitconfig
      ci: use the new GitHub Action to download git-sdk-64-minimal
      ci (vs-build): use `cmd` to copy the DLLs, not `powershell`
      ci: upgrade to using actions/{up,down}load-artifacts v2
      ci (windows): transfer also the Git-tracked files to the test jobs
      artifacts-tar: respect NO_GETTEXT
      ci: accelerate the checkout
      ci: run `make sparse` as part of the GitHub workflow
      ci(check-whitespace): stop requiring a read/write token
      ci(check-whitespace): restrict to the intended commits

Jonathan Nieder (2):
      xsize_t: avoid implementation defined behavior when len < 0
      Revert 'diff-merges: let "-m" imply "-p"'

Jonathan Tan (7):
      repository: move global r_f_p_c to repo struct
      promisor-remote: support per-repository config
      submodule: refrain from filtering GIT_CONFIG_COUNT
      run-command: refactor subprocess env preparation
      promisor-remote: teach lazy-fetch in any repo
      unpack-trees: refactor prefetching code
      cache-tree: prefetch in partial clone read-tree

Jordi Mas (3):
      l10n: Update Catalan translation
      l10n: Update Catalan translation
      l10n: Update Catalan translation

Josh Steadmon (1):
      docs: fix api-trace2 doc for "too_many_files" event

Julian Verdurmen (1):
      userdiff: add support for C# record types

Junio C Hamano (14):
      revisions(7): clarify that most commands take a single revision range
      The first batch post Git 2.32
      The second batch
      The third batch
      The fourth batch
      CodingGuidelines: recommend gender-neutral description
      The fifth batch
      The sixth batch
      The seventh batch
      Git 2.33-rc0
      The eighth batch
      Git 2.33-rc1
      Git 2.33-rc2
      Git 2.33

Kaartic Sivaraam (1):
      submodule: remove unnecessary `prefix` based option logic

Matheus Tavares (1):
      parallel-checkout: send the new object_id algo field to the workers

Matthew Rogers (3):
      cmake: add knob to disable vcpkg
      cmake: create compile_commands.json by default
      cmake: add warning for ignored MSGFMT_EXE

Michael Schindler (1):
      mergetools/kdiff3: make kdiff3 work on Windows too

Patrick Steinhardt (2):
      perf: fix when running with TEST_OUTPUT_DIRECTORY
      t0000: fix test if run with TEST_OUTPUT_DIRECTORY

Peter Krefting (3):
      l10n: fixed typos of mismatched constant strings
      l10n: sv.po: Update Swedish translation (5227t0f0u)
      l10n: sv.po: Update Swedish translation (5230t0f0u)

Philippe Blain (6):
      parse-options: don't complete option aliases by default
      doc: clarify description of 'submodule.recurse'
      merge: add missing word "strategy" to a message
      Documentation: define 'MERGE_AUTOSTASH'
      merge: apply autostash if fast-forward fails
      merge: apply autostash if merge strategy fails

Ralf Thielow (3):
      l10n: update German translation for Git v2.33.0
      l10n: de.po: fix typos
      l10n: update German translation for Git v2.33.0 (rnd2)

René Scharfe (5):
      grep: report missing left operand of --and
      khash: clarify that allocations never fail
      use fspathhash() everywhere
      object-file: use unsigned arithmetic with bit mask
      oidtree: avoid unaligned access to crit-bit tree

Reuven Y (1):
      docs: improve fast-forward in glossary content

Sergey Organov (10):
      t4013: test that "-m" alone has no effect in "git log"
      t4013: test "git log -m --raw"
      t4013: test "git log -m --stat"
      t4013: test "git diff-tree -m"
      t4013: test "git diff-index -m"
      diff-merges: move specific diff-index "-m" handling to diff-index
      git-svn: stop passing "-m" to "git rev-list"
      stash list: stop passing "-m" to "git log"
      diff-merges: rename "combined_imply_patch" to "merges_imply_patch"
      diff-merges: let "-m" imply "-p"

Stephen Manz (3):
      t2400: clean up '"add" worktree with lock' test
      worktree: mark lock strings with `_()` for translation
      worktree: teach `add` to accept --reason <string> with --lock

Tao Klerks (1):
      Remove warning that repack only works on non-promisor packfiles

Taylor Blau (6):
      csum-file: introduce checksum_valid()
      commit-graph: rewrite to use checksum_valid()
      midx: don't reuse corrupt MIDXs when writing
      midx: report checksum mismatches during 'verify'
      multi-pack-index: fix potential segfault without sub-command
      pack-bitmap: clarify comment in filter_bitmap_exclude_type()

Teng Long (1):
      packfile-uri.txt: fix blobPackfileUri description

Thomas Braun (1):
      completion: add --anchored to diff's options

Thomas Bétous (1):
      mingw: align symlinks-related rmdir() behavior with Linux

Trần Ngọc Quân (3):
      l10n: vi.po(5227t): Updated Vietnamese translation for v2.32.0
      l10n: vi.po(5227t): Fixed typo after run git-po-helper
      l10n: vi.po(5230t): Updated translation for v2.32.0 round 2

Wolfgang Müller (1):
      rev-parse: mark die() messages for translation

Yi-Jyun Pan (2):
      l10n: zh_TW.po: update for v2.33.0 rnd 2
      l10n: zh_TW.po: remove the obsolete glossary

ZheNing Hu (4):
      ref-filter: add objectsize to used_atom
      ref-filter: introduce enum atom_type
      cat-file: handle trivial --batch format with --batch-all-objects
      cat-file: merge two block into one

brian m. carlson (1):
      rev-list: add option for --pretty=format without header

dorgon.chang (1):
      git-p4: fix failed submit by skip non-text data files

edef (1):
      mailinfo: don't discard names under 3 characters

Ævar Arnfjörð Bjarmason (93):
      test-lib: bring $remove_trash out of retirement
      test-lib tests: remove dead GIT_TEST_FRAMEWORK_SELFTEST variable
      test-lib-functions: reword "test_commit --append" docs
      test-lib-functions: document test_commit --no-tag
      test-lib functions: add an --annotated option to "test_commit"
      describe tests: convert setup to use test_commit
      test-lib functions: add --printf option to test_commit
      submodule tests: use symbolic-ref --short to discover branch name
      test-lib: reformat argument list in test_create_repo()
      test-lib: do not show advice about init.defaultBranch under --verbose
      test-lib: split up and deprecate test_create_repo()
      grep/pcre2 tests: reword comments referring to kwset
      pickaxe tests: refactor to use test_commit --append --printf
      pickaxe tests: add test for diffgrep_consume() internals
      pickaxe tests: add test for "log -S" not being a regex
      pickaxe tests: test for -G, -S and --find-object incompatibility
      pickaxe tests: add missing test for --no-pickaxe-regex being an error
      pickaxe: die when -G and --pickaxe-regex are combined
      pickaxe: die when --find-object and --pickaxe-all are combined
      diff.h: move pickaxe fields together again
      pickaxe/style: consolidate declarations and assignments
      perf: add performance test for pickaxe
      pickaxe: refactor function selection in diffcore-pickaxe()
      pickaxe: assert that we must have a needle under -G or -S
      pickaxe -S: support content with NULs under --pickaxe-regex
      pickaxe: rename variables in has_changes() for brevity
      pickaxe -S: slightly optimize contains()
      xdiff-interface: prepare for allowing early return
      xdiff-interface: allow early return from xdiff_emit_line_fn
      pickaxe -G: terminate early on matching lines
      pickaxe -G: don't special-case create/delete
      xdiff users: use designated initializers for out_line
      xdiff-interface: replace discard_hunk_line() with a flag
      describe tests: improve test for --work-tree & --dirty
      describe tests: refactor away from glob matching
      describe tests: don't rely on err.actual from "check_describe"
      describe tests: fix nested "test_expect_success" call
      describe tests: support -C in "check_describe"
      trace2: refactor to avoid gcc warning under -O3
      send-email tests: support GIT_TEST_PERL_FATAL_WARNINGS=true
      send-email tests: test for boolean variables without a value
      send-email: remove non-working support for "sendemail.smtpssl"
      send-email: refactor sendemail.smtpencryption config parsing
      send-email: copy "config_regxp" into git-send-email.perl
      send-email: lazily load config for a big speedup
      send-email: lazily shell out to "git var"
      send-email: use function syntax instead of barewords
      send-email: get rid of indirect object syntax
      send-email: lazily load modules for a big speedup
      perl: lazily load some common Git.pm setup code
      send-email: move trivial config handling to Perl
      perl: nano-optimize by replacing Cwd::cwd() with Cwd::getcwd()
      protocol-caps.h: add newline at end of file
      read-cache.c: don't guard calls to progress.c API
      xdiff: use BUG(...), not xdl_bug(...)
      builtins + test helpers: use return instead of exit() in cmd_*
      mktag tests: parse out options in helper
      mktag tests: invert --no-strict test
      show-branch tests: rename the one "show-branch" test file
      show-branch tests: modernize test code
      pre-commit hook tests: don't leave "actual" nonexisting on failure
      gc tests: add a test for the "pre-auto-gc" hook
      mktag tests: test hash-object --literally and unreachable fsck
      mktag tests: test update-ref and reachable fsck
      mktag tests: test for-each-ref
      mktag tests: test fast-export
      show-branch: don't <COLOR></RESET> for space characters
      show-branch tests: add missing tests
      Makefile: add and use the ".DELETE_ON_ERROR" flag
      test-lib.sh: set COLUMNS=80 for --verbose repeatability
      send-pack.c: move "no refs in common" abort earlier
      fetch: document the --negotiate-only option
      *.h: move some *_INIT to designated initializers
      *.c *_init(): define in terms of corresponding *_INIT macro
      dir.[ch]: replace dir_init() with DIR_INIT
      string-list.[ch]: add a string_list_init_{nodup,dup}()
      string-list.h users: change to use *_{nodup,dup}()
      bundle cmd: stop leaking memory from parse_options_cmd_bundle()
      bundle.c: use a temporary variable for OIDs and names
      bundle: remove "ref_list" in favor of string-list.c API
      imap-send.c: use less verbose strbuf_fread() idiom
      fetch: fix segfault in --negotiate-only without --negotiation-tip=*
      *.c static functions: don't forward-declare __attribute__
      sequencer.c: move static function to avoid forward decl
      *.c static functions: add missing __attribute__((format))
      *.h: add a few missing __attribute__((format))
      advice.h: add missing __attribute__((format)) & fix usage
      test-lib-functions: use test-tool for [de]packetize()
      SubmittingPatches: move discussion of Signed-off-by above "send"
      SubmittingPatches: replace discussion of Travis with GitHub Actions
      bundle tests: use ">file" not ": >file"
      bundle tests: use test_cmp instead of grep
      t0001: fix broken not-quite getcwd(3) test in bed67874e2

Đoàn Trần Công Danh (6):
      t: use configured TAR instead of tar
      doc/log: correct default for --decorate
      t: use user-specified utf-8 locale for testing svn
      test-lib-functions: introduce test_stdout_line_count
      t6400: preserve git ls-files exit status code
      t6402: preserve git exit status code

依云 (1):
      l10n: zh_CN: review for git v2.32.0 l10n round 1