A release candidate Git v2.42.0-rc1 is now available for testing at the usual places. It is comprised of 422 non-merge commits since v2.41.0, contributed by 63 people, 15 of which are new faces [*]. There are still some corners to be rounded before everything is ready to go, but I've already extended -rc1 by a day, so let's not wait for the regression fixes we already know of but haven't got around to. They will be in 'master' before -rc2 is tagged. On the other hand, changes that are not about fixing new regressions introduced during this cycle are to be postponed until the next cycle. The tarballs are found at: https://www.kernel.org/pub/software/scm/git/testing/ The following public repositories all have a copy of the 'v2.42.0-rc1' 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.41.0 are as follows. Welcome to the Git development community! Adam Majer, Andreas Herrmann, Greg Alexander, Han Young, Jacob Abel, Jan Klötzke, Jim Pryor, Johan Ruokangas, Josh Sref, Josip Sokcevic, Louis Strous, Petar Vutov, Premek Vysoky, Tribo Dar, and Vinayak Dev. Returning contributors who helped this release are as follows. Thanks for your continued support. Alejandro R. Sedeño, Alex Henrie, Beat Bolli, brian m. carlson, Calvin Wan, Christian Couder, D. Ben Knoble, Derrick Stolee, Elijah Newren, Eric Sunshine, Eric Wong, Glen Choo, Hariom Verma, Jacob Keller, Jaydeep Das, Jeff King, Johannes Schindelin, John Cai, Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kousik Sanagavarapu, Kristoffer Haugsbakk, Linus Arver, Martin Ågren, Matthew Hughes, Matthias Aßhauer, M Hickford, Michael Haggerty, Mike Hommey, Nsengiyumva Wilberforce, Patrick Steinhardt, Philippe Blain, Phillip Wood, Randall S. Becker, René Scharfe, Rubén Justo, Sean Allred, Shuqi Liang, SZEDER Gábor, Taylor Blau, Teng Long, Todd Zullinger, Toon Claes, Torsten Bögershausen, Victoria Dye, and ZheNing Hu. [*] We are counting not just the authorship contribution but issue reporting, mentoring, helping and reviewing that are recorded in the commit trailers. ---------------------------------------------------------------- Git v2.42 Release Notes (draft) =============================== UI, Workflows & Features * "git pack-refs" learns "--include" and "--exclude" to tweak the ref hierarchy to be packed using pattern matching. * 'git worktree add' learned how to create a worktree based on an orphaned branch with `--orphan`. * "git pack-objects" learned to invoke a new hook program that enumerates extra objects to be used as anchoring points to keep otherwise unreachable objects in cruft packs. * Add more "git var" for toolsmiths to learn various locations Git is configured with either via the configuration or hardcoded defaults. * 'git notes append' was taught '--separator' to specify string to insert between paragraphs. * The "git for-each-ref" family of commands learned placeholders related to GPG signature verification. * "git diff --no-index" learned to read from named pipes as if they were regular files, to allow "git diff <(process) <(substitution)" some shells support. * Help newbies by suggesting that there are cases where force-pushing is a valid and sensible thing to update a branch at a remote repository, rather than reconciling with merge/rebase. * "git blame --contents=file" has been taught to work in a bare repository. * "git branch -f X" to repoint the branch X said that X was "checked out" in another worktree, even when branch X was not and instead being bisected or rebased. The message was reworded to say the branch was "in use". * Tone down the warning on SHA-256 repositories being an experimental curiosity. We do not have support for them to interoperate with traditional SHA-1 repositories, but at this point, we do not plan to make breaking changes to SHA-256 repositories and there is no longer need for such a strongly phrased warning. Performance, Internal Implementation, Development Support etc. * "git diff-tree" has been taught to take advantage of the sparse-index feature. * Clang's sanitizer implementation seems to work better than GCC's. (merge d88d727143 jk/ci-use-clang-for-sanitizer-jobs later to maint). * The object traversal using reachability bitmap done by "pack-object" has been tweaked to take advantage of the fact that using "boundary" commits as representative of all the uninteresting ones can save quite a lot of object enumeration. * discover_git_directory() no longer touches the_repository. * "git worktree" learned to work better with sparse index feature. * When the external merge driver is killed by a signal, its output should not be trusted as a resolution with conflicts that is proposed by the driver, but the code did. * The set-up code for the get_revision() API now allows feeding options like --all and --not in the --stdin mode. * Move functions that are not about pure string manipulation out of strbuf.[ch] * "imap-send" codepaths got cleaned up to get rid of unused parameters. * Enumerating refs in the packed-refs file, while excluding refs that match certain patterns, has been optimized. * Mark-up unused parameters in the code so that we can eventually enable -Wunused-parameter by default. * Instead of inventing a custom counter variables for debugging, use existing trace2 facility in the fsync customization codepath. * "git branch --list --format=<format>" and friends are taught a new "%(describe)" placeholder. * Clarify how to choose the starting point for a new topic in developer guidance document. * The implementation of "get_sha1_hex()" that reads a hexadecimal string that spells a full object name has been extended to cope with any hash function used in the repository, but the "sha1" in its name survived. Rename it to get_hash_hex(), a name that is more consistent within its friends like get_hash_hex_algop(). * Command line parser fix, and a small parse-options API update. Fixes since v2.41 ----------------- * "git tag" learned to leave the "$GIT_DIR/TAG_EDITMSG" file when the command failed, so that the user can salvage what they typed. (merge 08c12ec1d0 kh/keep-tag-editmsg-upon-failure later to maint). * The "-s" (silent, squelch) option of the "diff" family of commands did not interact with other options that specify the output format well. This has been cleaned up so that it will clear all the formatting options given before. (merge 9d484b92ed jc/diff-s-with-other-options later to maint). * Update documentation regarding Coccinelle patches. (merge 3bd0097cfc gc/doc-cocci-updates later to maint). * Some atoms that can be used in "--format=<format>" for "git ls-tree" were not supported by "git ls-files", even though they were relevant in the context of the latter. (merge 4d28c4f75f zh/ls-files-format-atoms later to maint). * Document more pseudo-refs and teach the command line completion machinery to complete AUTO_MERGE. (merge 982ff3a649 pb/complete-and-document-auto-merge-and-friends later to maint). * "git submodule" code trusted the data coming from the config (and the in-tree .gitmodules file) too much without validating, leading to NULL dereference if the user mucks with a repository (e.g. submodule.<name>.url is removed). This has been corrected. (merge fbc806acd1 tb/submodule-null-deref-fix later to maint). * The value of config.worktree is per-repository, but has been kept in a singleton global variable per process. This has been OK as most Git operations interacted with a single repository at a time, but not right for operations like recursive "grep" that want to access multiple repositories from a single process without forking. The global variable has been eliminated and made into a member in the per-repository data structure. (merge 3867f6d650 vd/worktree-config-is-per-repository later to maint). * "git [-c log.follow=true] log [--follow] ':(glob)f**'" used to barf. (merge 8260bc5902 jk/log-follow-with-non-literal-pathspec later to maint). * Introduce a mechanism to disable replace refs globally and per repository. (merge 9c7d1b057f ds/disable-replace-refs later to maint). * "git cat-file --batch" and friends learned "-Z" that uses NUL delimiter for both input and output. (merge f79e18849b ps/cat-file-null-output later to maint). * The reimplemented "git add -i" did not honor color.ui configuration. (merge 6f74648cea ds/add-i-color-configuration-fix later to maint). * Compilation fix for platforms without D_TYPE in struct dirent. (merge 03bf92b9bf as/dtype-compilation-fix later to maint). * Suggest to refrain from using hex literals that are non-portable when writing printf(1) format strings. (merge f0b68f0546 jt/doc-use-octal-with-printf later to maint). * Simplify error message when run-command fails to start a command. (merge 6d224ac286 rs/run-command-exec-error-on-noent later to maint). * Gracefully deal with a stale MIDX file that lists a packfile that no longer exists. (merge 06f3867865 tb/open-midx-bitmap-fallback later to maint). * Even when diff.ignoreSubmodules tells us to ignore submodule changes, "git commit" with an index that already records changes to submodules should include the submodule changes in the resulting commit, but it did not. (merge 5768478edc js/defeat-ignore-submodules-config-with-explicit-addition later to maint). * When "git commit --trailer=..." invokes the interpret-trailers machinery, it knows what it feeds to interpret-trailers is a full log message without any patch, but failed to express that by passing the "--no-divider" option, which has been corrected. (merge be3d654343 jk/commit-use-no-divider-with-interpret-trailers later to maint). * Avoid breakage of "git pack-objects --cruft" due to inconsistency between the way the code enumerates packfiles in the repository. (merge 73320e49ad tb/collect-pack-filenames-fix later to maint). * We create .pack and then .idx, we consider only packfiles that have .idx usable (those with only .pack are not ready yet), so we should remove .idx before removing .pack for consistency. (merge 0dd1324a73 ds/remove-idx-before-pack later to maint). * Partially revert a sanity check that the rest of the config code was not ready, to avoid triggering it in a corner case. (merge a53f43f900 gc/config-partial-submodule-kvi-fix later to maint). * "git apply" punts when it is fed too large a patch input; the error message it gives when it happens has been clarified. (merge 42612e18d2 pw/apply-too-large later to maint). * During a cherry-pick or revert session that works on multiple commits, "git status" did not give correct information, which has been corrected. (merge a096a889f4 jk/cherry-pick-revert-status later to maint). * A few places failed to differentiate the case where the index is truly empty (nothing added) and we haven't yet read from the on-disk index file, which have been corrected. (merge 2ee045eea1 js/empty-index-fixes later to maint). * "git bugreport" tests did not test what it wanted to test, which has been corrected. (merge 1aa92b8500 ma/t0091-fixup later to maint). * Code snippets in a tutorial document no longer compiled after recent header shuffling, which have been corrected. (merge bbd7c7b7c0 vd/adjust-mfow-doc-to-updated-headers later to maint). * "git ls-files '(attr:X)D/'" that triggers the common prefix optimization codepath failed to read from "D/.gitattributes", which has been corrected. (merge f4a8fde057 jc/pathspec-match-with-common-prefix later to maint). * "git fsck --no-progress" still spewed noise from the commit-graph subsystem, which has been corrected. (merge 9281cd07f0 tb/fsck-no-progress later to maint). * Various offset computation in the code that accesses the packfiles and other data in the object layer has been hardened against arithmetic overflow, especially on 32-bit systems. (merge 9a25cad7e0 tb/object-access-overflow-protection later to maint). * Names of MinGW header files are spelled in mixed case in some source files, but the build host can be using case sensitive filesystem with header files with their name spelled in all lowercase. (merge 4a53d0d0bc mh/mingw-case-sensitive-build later to maint). * Update message mark-up for i18n in "git bundle". (merge bbb6acd998 dk/bundle-i18n-more later to maint). * "git tag --list --points-at X" showed tags that directly refers to object X, but did not list a tag that points at such a tag, which has been corrected. * "./configure --with-expat=no" did not work as a way to refuse use of the expat library on a system with the library installed, which has been corrected. (merge fb8f7269c2 ah/autoconf-fixes later to maint). * When the user edits "rebase -i" todo file so that it starts with a "fixup", which would make it invalid, the command truncated the rest of the file before giving an error and returning the control back to the user. Stop truncating to make it easier to correct such a malformed todo file. (merge 9645a087c2 ah/sequencer-rewrite-todo-fix later to maint). * Rewrite the description of giving a custom command to the submodule.<name>.update configuration variable. (merge 7cebc5bd78 pv/doc-submodule-update-settings later to maint). * Adjust to OpenSSL 3+, which deprecates its SHA-1 functions based on its traditional API, by using its EVP API instead. (merge bda9c12073 ew/hash-with-openssl-evp later to maint). * Exclude "." from the set of characters to be removed from the beginning and the end of the human-readable name. (merge 1c04cb0744 bc/ident-dot-is-no-longer-crud-letter later to maint). * "git bisect visualize" stopped running "gitk" on Git for Windows when the command was reimplemented in C around Git 2.34 timeframe. This has been corrected. (merge fff1594fa7 ma/locate-in-path-for-windows later to maint). * "git rebase -i" with a series of squash/fixup, when one of the steps stopped in conflicts and ended up getting skipped, did not handle the accumulated commit log messages, which has been corrected. (merge 6ce7afe163 pw/rebase-skip-commit-message-fix later to maint). * Other code cleanup, docfix, build fix, etc. (merge 51f9d2e563 sa/doc-ls-remote later to maint). (merge c6d26a9dda jk/format-patch-message-id-unleak later to maint). (merge f7e063f326 ps/fetch-cleanups later to maint). (merge e4cf013468 tl/quote-problematic-arg-for-clarity later to maint). (merge 20025fdfc7 tz/test-ssh-verifytime-fix later to maint). (merge e48a21df65 tz/test-fix-pthreads-prereq later to maint). (merge 68b51172e3 mh/commit-reach-get-reachable-plug-leak later to maint). (merge aeee1408ce kh/use-default-notes-doc later to maint). (merge 3b8724bce6 jc/test-modernization later to maint). (merge 447a3b7331 jc/test-modernization-2 later to maint). (merge d57fa7fc73 la/doc-interpret-trailers later to maint). (merge 548afb0d9a la/docs-typofixes later to maint). (merge 3744ffcbcd rs/doc-ls-tree-hex-literal later to maint). (merge 6c26da8404 mh/credential-erase-improvements later to maint). (merge 78e56cff69 tz/lib-gpg-prereq-fix later to maint). (merge 80d32e84b5 rj/leakfixes later to maint). (merge 0a868031ed pb/complete-diff-options later to maint). (merge d4f28279ad jc/doc-hash-object-types later to maint). (merge 1876a5ae15 ks/t4205-test-describe-with-abbrev-fix later to maint). (merge 6e6a529b57 jk/fsck-indices-in-worktrees later to maint). (merge 3e81b896f7 rs/packet-length-simplify later to maint). (merge 4c9cb51fe7 mh/doc-credential-helpers later to maint). (merge 3437f549dd jr/gitignore-doc-example-markup later to maint). (merge 947ebd62a0 jc/am-parseopt-fix later to maint). (merge e12cb98e1e jc/branch-parseopt-fix later to maint). (merge d6f598e443 jc/gitignore-doc-pattern-markup later to maint). (merge a2dad4868b jc/transport-parseopt-fix later to maint). (merge 68cbb20e73 jc/parse-options-show-branch later to maint). (merge 3821eb6c3d jc/parse-options-reset later to maint). (merge c48af99a3e bb/trace2-comment-fix later to maint). (merge c95ae3ff9c rs/describe-parseopt-fix later to maint). (merge 36f76d2a25 rs/pack-objects-parseopt-fix later to maint). (merge 30c8c55cbf jc/tree-walk-drop-base-offset later to maint). (merge d089a06421 rs/bundle-parseopt-cleanup later to maint). (merge 823839bda1 ew/sha256-gcrypt-leak-fixes later to maint). (merge a5c01603b3 bc/ignore-clangd-cache later to maint). ---------------------------------------------------------------- Changes since v2.41.0 are as follows: Adam Majer (1): doc: sha256 is no longer experimental Alejandro R. Sedeño (1): statinfo.h: move DTYPE defines from dir.h Alex Henrie (4): wt-status: don't show divergence advice when committing remote: don't imply that integration is always required before pushing push: don't imply that integration is always required before pushing sequencer: finish parsing the todo list despite an invalid first line Andreas Herrmann (3): configure.ac: don't overwrite NO_EXPAT option configure.ac: don't overwrite NO_CURL option configure.ac: always save NO_ICONV to config.status Beat Bolli (2): trace2: fix a comment wrapper: use trace2 counters to collect fsync stats Calvin Wan (13): strbuf: clarify API boundary strbuf: clarify dependency abspath: move related functions to abspath credential-store: move related functions to credential-store file object-name: move related functions to object-name path: move related function to path strbuf: remove global variable git-compat-util: move strbuf.c funcs to its header git-compat-util: move wrapper.c funcs to its header sane-ctype.h: create header for sane-ctype macros kwset: move translation table from ctype treewide: remove unnecessary includes for wrapper.h git-compat-util: move alloc macros to git-compat-util.h D. Ben Knoble (2): i18n: mark more bundle.c strings for translation t4002: fix "diff can read from stdin" syntax Derrick Stolee (7): add: check color.ui for interactive add add: test use of brackets when color is disabled repository: create disable_replace_refs() replace-objects: create wrapper around setting repository: create read_replace_refs setting packfile: delete .idx files before .pack files builtin/repack.c: only repack `.pack`s that exist Elijah Newren (28): init-db: document existing bug with core.bare in template config init-db: remove unnecessary global variable init-db, clone: change unnecessary global into passed parameter setup: adopt shared init-db & clone code read-cache: move shared commit and ls-files code add: modify add_files_to_cache() to avoid globals read-cache: move shared add/checkout/commit code statinfo: move stat_{data,validity} functions from cache/read-cache run-command.h: move declarations for run-command.c from cache.h name-hash.h: move declarations for name-hash.c from cache.h sparse-index.h: move declarations for sparse-index.c from cache.h preload-index.h: move declarations for preload-index.c from elsewhere diff.h: move declaration for global in diff.c from cache.h merge.h: move declarations for merge.c from cache.h repository.h: move declaration of the_index from cache.h read-cache*.h: move declarations for read-cache.c functions from cache.h cache.h: remove this no-longer-used header log-tree: replace include of revision.h with simple forward declaration repository: remove unnecessary include of path.h diff.h: remove unnecessary include of oidset.h list-objects-filter-options.h: remove unneccessary include builtin.h: remove unneccessary includes git-compat-util.h: remove unneccessary include of wildmatch.h merge-ll: rename from ll-merge khash: name the structs that khash declares object-store-ll.h: split this header out of object-store.h hash-ll, hashmap: move oidhash() to hash-ll fsmonitor-ll.h: split this header out of fsmonitor.h Eric Sunshine (1): fsck: avoid misleading variable name Eric Wong (5): sha256/gcrypt: fix build with SANITIZE=leak sha256/gcrypt: fix memory leak with SHA-256 repos sha256/gcrypt: die on gcry_md_open failures sha256: avoid functions deprecated in OpenSSL 3+ avoid SHA-1 functions deprecated in OpenSSL 3+ Glen Choo (16): cocci: add headings to and reword README cocci: codify authoring and reviewing practices setup.c: don't setup in discover_git_directory() config: don't BUG when both kvi and source are set config: inline git_color_default_config urlmatch.h: use config_fn_t type config: add ctx arg to config_fn_t config.c: pass ctx in configsets config: pass ctx with config files config.c: pass ctx with CLI config trace2: plumb config kvi config: pass kvi to die_bad_number() config.c: remove config_reader from configsets config: add kvi.path, use it to evaluate includes config: pass source to config_parser_event_fn_t mailmap: change primary address for Glen Choo Han Young (1): blame: allow --contents to work with bare repo Jacob Abel (11): worktree add: include -B in usage docs t2400: cleanup created worktree in test t2400: refactor "worktree add" opt exclusion tests t2400: add tests to verify --quiet worktree add: add --orphan flag worktree add: introduce "try --orphan" hint worktree add: extend DWIM to infer --orphan worktree add: emit warn when there is a bad HEAD t2400: drop no-op `--sq` from rev-parse call builtin/worktree.c: convert tab in advice to space t2400: rewrite regex to avoid unintentional PCRE Jacob Keller (1): fix cherry-pick/revert status when doing multiple commits Jan Klötzke (1): ref-filter: handle nested tags in --points-at option Jeff King (36): format-patch: free rev.message_id when exiting format-patch: free elements of rev.ref_message_ids list pathspec: factor out magic-to-name function diff: factor out --follow pathspec check diff: detect pathspec magic not supported by --follow ci: use clang for ASan/UBSan checks ci: run ASan/UBSan in a single job ci: drop linux-clang job commit: pass --no-divider to interpret-trailers http: handle both "h2" and "h2h3" in curl info lines var: mark unused parameters in git_var callbacks imap-send: use server conf argument in setup_curl() imap-send: drop unused parameter from imap_cmd_cb callback imap-send: drop unused fields from imap_cmd_cb refs.c: rename `ref_filter` ref-filter.h: provide `REF_FILTER_INIT` ref-filter: clear reachable list pointers after freeing ref-filter: add `ref_filter_clear()` ref-filter.c: parameterize match functions over patterns test-ref-store: drop unimplemented reflog-expire command do_for_each_ref_helper(): mark unused repository parameter http: mark unused parameters in curl callbacks http-push: mark unused parameter in xml callback am: mark unused keep_cr parameters count-objects: mark unused parameter in alternates callback revisions: drop unused "opt" parameter in "tweak" callbacks fsck: mark unused parameters in various fsck callbacks merge-tree: mark unused parameter in traverse callback replace: mark unused parameter in ref callback replace: mark unused parameter in each_mergetag_fn callback rev-parse: mark unused parameter in for_each_abbrev callback tag: mark unused parameters in each_tag_name_fn callbacks t/helper: mark unused callback void data parameters ref-filter: avoid parsing tagged objects in match_points_at() ref-filter: avoid parsing non-tags in match_points_at() ref-filter: simplify return type of match_points_at Johan Ruokangas (1): gitignore.txt: use backticks instead of double quotes Johannes Schindelin (3): do_read_index(): always mark index as initialized unless erroring out split-index: accept that a base index can be empty commit -a -m: allow the top-level tree to become empty again John Cai (34): docs: clarify git-pack-refs --all will pack all refs pack-refs: teach --exclude option to exclude refs from being packed pack-refs: teach pack-refs --include option t0000-basic: modernize test format t0030-stripspace: modernize test format t3210-pack-refs: modernize test format t1001-read-tree-m-2way: modernize test format t1002-read-tree-m-u-2way: modernize test format t1006-cat-file: modernize test format t3500-cherry: modernize test format t3700-add: modernize test format t3903-stash: modernize test format t4002-diff-basic: modernize test format t4003-diff-rename-1: modernize test format t4004-diff-rename-symlink: modernize test format t4202-log: modernize test format t4206-log-follow-harder-copies: modernize test format t5300-pack-object: modernize test format t5301-sliding-window: modernize test format t5303-pack-corruption-resilience: modernize test format t5306-pack-nobase: modernize test format t6050-replace: modernize test format t7101-reset-empty-subdirs: modernize test format t7110-reset-merge: modernize test format t7111-reset-table: modernize test format t7201-co: modernize test format t7508-status: modernize test format t7600-merge: modernize test format t7700-repack: modernize test format t9100-git-svn-basic: modernize test format t9104-git-svn-follow-parent: modernize test format t9200-git-cvsexportcommit: modernize test format t9400-git-cvsserver-server: modernize test format docs: add git hash-object -t option's possible values Jonathan Tan (1): CodingGuidelines: use octal escapes, not hex Josip Sokcevic (1): diff-lib: honor override_submodule_config flag bit Junio C Hamano (46): diff: fix interaction between the "-s" option and other options show-branch doc: say <ref>, not <reference> Start the 2.42 cycle The second batch for 2.42 The third batch ll-merge: killing the external merge driver aborts the merge The fourth batch t6406: skip "external merge driver getting killed by a signal" test on Windows The fifth batch The sixth batch The seventh batch The eighth batch t6135: attr magic with path pattern tree-walk: lose base_offset that is never used in tree_entry_interesting tree-walk: drop unused base_offset from do_match() The ninth batch dir: match "attr" pathspec magic with correct paths The tenth batch The eleventh batch The twelfth batch gitignore.txt: mark up explanation of patterns consistently am: simplify parsing of "--[no-]keep-cr" branch: reject "--no-all" and "--no-remotes" early parse-options: introduce OPT_IPVERSION() fetch: reject --no-ipv[46] show-branch: --no-sparse should give dense output short help: allow multi-line opthelp remote: simplify "remote add --tags" help text short help: allow a gap smaller than USAGE_GAP show-branch: reject --[no-](topo|date)-order reset: reject --no-(mixed|soft|hard|merge|keep) option The thirteenth batch branch: update the message to refuse touching a branch in-use hex: retire get_sha1_hex() The fourteenth batch SubmittingPatches: choice of base for fixing an older maintenance track The fifteenth batch SubmittingPatches: explain why 'next' and above are inappropriate base SubmittingPatches: use of older maintenance tracks is an exception The sixteenth batch MyFirstContribution: refrain from self-iterating too much The seventeenth batch The eighteenth batch Git 2.42-rc0 A few more topics before -rc1 Git 2.42-rc1 Kousik Sanagavarapu (5): t/lib-gpg: introduce new prereq GPG2 ref-filter: add new "signature" atom t4205: correctly test %(describe:abbrev=...) ref-filter: add multiple-option parsing functions ref-filter: add new "describe" atom Kristoffer Haugsbakk (5): doc: tag: document `TAG_EDITMSG` t/t7004-tag: add regression test for successful tag creation tag: keep the message file in case ref transaction fails notes: update documentation for `use_default_notes` notes: move the documentation to the struct Linus Arver (15): docs: typofixes doc: trailer: fix grammar doc: trailer: swap verb order doc: trailer: drop "commit message part" phrasing doc: trailer: examples: avoid the word "message" by itself doc: trailer: remove redundant phrasing doc: trailer: use angle brackets for <token> and <value> doc: trailer.<token>.command: emphasize deprecation doc: trailer: mention 'key' in DESCRIPTION doc: trailer: add more examples in DESCRIPTION SubmittingPatches: reword awkward phrasing SubmittingPatches: discuss subsystems separately from git.git SubmittingPatches: de-emphasize branches as starting points SubmittingPatches: emphasize need to communicate non-default starting points SubmittingPatches: simplify guidance for choosing a starting point M Hickford (3): credential: avoid erasing distinct password credential: erase all matching credentials doc: gitcredentials: link to helper list Martin Ågren (1): t0091-bugreport.sh: actually verify some content of report Matthias Aßhauer (3): run-command: conditionally define locate_in_PATH() compat/mingw: implement a native locate_in_PATH() docs: update when `git bisect visualize` uses `gitk` Mike Hommey (2): commit-reach: fix memory leak in get_reachable_subset() mingw: use lowercase includes for some Windows headers Patrick Steinhardt (17): fetch: drop unused DISPLAY_FORMAT_UNKNOWN enum value fetch: drop unneeded NULL-check for `remote_ref` fetch: pass through `fetch_config` directly fetch: use `fetch_config` to store "fetch.prune" value fetch: use `fetch_config` to store "fetch.pruneTags" value fetch: use `fetch_config` to store "fetch.showForcedUpdates" value fetch: use `fetch_config` to store "fetch.recurseSubmodules" value fetch: use `fetch_config` to store "fetch.parallel" value fetch: use `fetch_config` to store "submodule.fetchJobs" value t1006: don't strip timestamps from expected results t1006: modernize test style to use `test_cmp` strbuf: provide CRLF-aware helper to read until a specified delimiter cat-file: simplify reading from standard input cat-file: add option '-Z' that delimits input and output with NUL revision: reorder `read_revisions_from_stdin()` revision: small readability improvement for reading from stdin revision: handle pseudo-opts in `--stdin` mode Petar Vutov (1): doc: highlight that .gitmodules does not support !command Philippe Blain (30): revisions.txt: use description list for special refs revisions.txt: document more special refs completion: complete REVERT_HEAD and BISECT_HEAD git-merge.txt: modernize word choice in "True merge" section Documentation: document AUTO_MERGE completion: complete AUTO_MERGE completion: add comments describing __git_diff_* globals completion: complete --break-rewrites completion: complete --cc completion: complete --combined-all-paths completion: complete --compact-summary completion: complete --default-prefix completion: complete --find-copies completion: complete --find-object completion: complete --find-renames completion: complete --function-context completion: complete --ignore-matching-lines completion: complete --irreversible-delete completion: complete --ita-invisible-in-index and --ita-visible-in-index completion: complete --line-prefix completion: complete --no-relative completion: complete --no-stat completion: complete --output completion: complete --output-indicator-{context,new,old} completion: complete --unified completion: complete --ws-error-highlight completion: move --pickaxe-{all,regex} to __git_diff_common_options completion: complete --diff-merges, its options and --no-diff-merges completion: complete --remerge-diff diff.c: mention completion above add_diff_options Phillip Wood (6): apply: improve error messages when reading patch diff --no-index: refuse to compare stdin to a directory diff --no-index: die on error reading stdin t4054: test diff --no-index with stdin diff --no-index: support reading from named pipes rebase --skip: fix commit message clean up when skipping squash René Scharfe (19): t1800: loosen matching of error message for bad shebang run-command: report exec error even on ENOENT ls-tree: fix documentation of %x format placeholder pretty: factor out expand_separator() strbuf: factor out strbuf_expand_step() replace strbuf_expand_dict_cb() with strbuf_expand_step() replace strbuf_expand() with strbuf_expand_step() strbuf: simplify strbuf_expand_literal_cb() ls-tree: simplify prefix handling pretty: avoid double negative in format_commit_item() pkt-line: add size parameter to packet_length() pretty: use strchr(3) in userformat_find_requirements() t6300: fix setup with GPGSSH but without GPG strbuf: use skip_prefix() in strbuf_addftime() ls-tree: fix --no-full-name describe: fix --no-exact-match pack-objects: fix --no-keep-true-parents pack-objects: fix --no-quiet bundle: use OPT_PASSTHRU_ARGV Rubén Justo (11): config: fix a leak in git_config_copy_or_rename_section_in_file remote: fix a leak in query_matches_negative_refspec branch: fix a leak in dwim_and_setup_tracking branch: fix a leak in inherit_tracking branch: fix a leak in check_tracking_branch branch: fix a leak in setup_tracking rev-parse: fix a leak with --abbrev-ref branch: fix a leak in setup_tracking branch: fix a leak in cmd_branch config: fix a leak in git_config_copy_or_rename_section_in_file tests: mark as passing with SANITIZE=leak Sean Allred (5): show-ref doc: update for internal consistency ls-remote doc: remove redundant --tags example ls-remote doc: show peeled tags in examples ls-remote doc: explain what each example does ls-remote doc: document the output format Shuqi Liang (2): diff-tree: integrate with sparse index worktree: integrate with sparse-index Taylor Blau (53): object: add object_array initializer helper function pack-bitmap.c: extract `fill_in_bitmap()` pack-bitmap.c: use commit boundary during bitmap traversal builtin/submodule--helper.c: handle missing submodule URLs builtin/repack.c: only collect fully-formed packs reachable.c: extract `obj_is_recent()` gc: introduce `gc.recentObjectsHook` pack-bitmap.c: gracefully degrade on failure to load MIDX'd pack t7701: make annotated tag unreachable fsck: suppress commit-graph output with `--no-progress` fsck: suppress MIDX output with `--no-progress` commit-graph.c: extract `verify_one_commit_graph()` commit-graph.c: iteratively verify commit-graph chains commit-graph.c: pass progress to `verify_one_commit_graph()` commit-graph.c: avoid duplicated progress output during `verify` builtin/for-each-ref.c: add `--exclude` option refs: plumb `exclude_patterns` argument throughout refs/packed-backend.c: refactor `find_reference_location()` refs/packed-backend.c: implement jump lists to avoid excluded pattern(s) refs/packed-backend.c: add trace2 counters for jump list revision.h: store hidden refs in a `strvec` refs.h: let `for_each_namespaced_ref()` take excluded patterns refs.h: implement `hidden_refs_to_excludes()` builtin/receive-pack.c: avoid enumerating hidden references upload-pack.c: avoid enumerating hidden refs where possible ls-refs.c: avoid enumerating hidden refs where possible builtin/repack.c: avoid dir traversal in `collect_pack_filenames()` packfile.c: prevent overflow in `nth_packed_object_id()` packfile.c: prevent overflow in `load_idx()` packfile.c: use checked arithmetic in `nth_packed_object_offset()` midx.c: use `size_t`'s for fanout nr and alloc midx.c: prevent overflow in `nth_midxed_object_oid()` midx.c: prevent overflow in `nth_midxed_offset()` midx.c: store `nr`, `alloc` variables as `size_t`'s midx.c: prevent overflow in `write_midx_internal()` midx.c: prevent overflow in `fill_included_packs_batch()` pack-bitmap.c: ensure that eindex lookups don't overflow commit-graph.c: prevent overflow in `write_commit_graph_file()` commit-graph.c: prevent overflow in add_graph_to_chain() commit-graph.c: prevent overflow in `load_oid_from_graph()` commit-graph.c: prevent overflow in `fill_commit_graph_info()` commit-graph.c: prevent overflow in `fill_commit_in_graph()` commit-graph.c: prevent overflow in `load_tree_for_commit()` commit-graph.c: prevent overflow in `split_graph_merge_strategy()` commit-graph.c: prevent overflow in `merge_commit_graph()` commit-graph.c: prevent overflow in `write_commit_graph()` commit-graph.c: prevent overflow in `verify_commit_graph()` t/lib-commit-graph.sh: allow `graph_read_expect()` in sub-directories t/lib-commit-graph.sh: avoid directory change in `graph_git_behavior()` t5318: avoid top-level directory changes t5328: avoid top-level directory changes t/lib-commit-graph.sh: avoid sub-shell in `graph_git_behavior()` Documentation/RelNotes/2.42.0.txt: typofix Teng Long (8): surround %s with quotes when failed to lookup commit notes.c: cleanup 'strbuf_grow' call in 'append_edit' notes.c: use designated initializers for clarity t3321: add test cases about the notes stripspace behavior notes.c: introduce '--separator=<paragraph-break>' option notes.c: append separator instead of insert by pos notes.c: introduce "--[no-]stripspace" option notes: introduce "--no-separator" option Todd Zullinger (3): trace2 tests: fix PTHREADS prereq t/lib-gpg: fix ssh-keygen -Y check-novalidate with openssh-9.0 t/lib-gpg: require GPGSSH for GPGSSH_VERIFYTIME prereq Victoria Dye (3): config: use gitdir to get worktree config config: pass 'repo' directly to 'config_with_options()' repository: move 'repository_format_worktree_config' to repo scope Vinayak Dev (1): docs: add necessary headers to Documentation/MFOW.txt ZheNing Hu (1): ls-files: align format atoms with ls-tree brian m. carlson (9): t: add a function to check executable bit var: add support for listing the shell var: format variable structure with C99 initializers var: adjust memory allocation for strings attr: expose and rename accessor functions var: add attributes files locations var: add config file locations ident: don't consider '.' a crud gitignore: ignore clangd .cache directory