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