[ANNOUNCE] Git v2.33.0

From: Junio C Hamano
Date: Mon Aug 16 2021 - 19:06:19 EST


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