An early preview release Git v2.48.0-rc0 is now available for testing at the usual places. It is comprised of 446 non-merge commits since v2.47.0, contributed by 66 people, 26 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.48.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.47.0 are as follows. Welcome to the Git development community! Aarni Koskela, Abraham Samuel Adekunle, Bence Ferdinandy, Caleb White, Chizoba ODINAKA, Daniel Black, David Gstir, Ed Reel, Eric Mills, fox, Jaroslav Lobačevski, Josh Heinrichs, Josh Poimboeuf, Kai Koponen, Kev Kloss, Liu Zhongbo, Miguel Rincon Barahona, Monika Kairaitytė, Nicolas Guichard, Russell Stuart, Sam James, Seyi Kuforiji, Shubham Kanodia, Simon Marchi, Tobias Boesch, and Usman Akinyemi. Returning contributors who helped this release are as follows. Thanks for your continued support. Alejandro R. Sedeño, Andrew Kreimer, brian m. carlson, Dario Gjorgjevski, Derrick Stolee, Elijah Newren, Eli Schwartz, Eric Sesterhenn, Eric Sunshine, Jean-Noël Avila, Jeff King, Johannes Schindelin, Johannes Sixt, John Cai, Jonathan Tan, Josh Soref, Josh Steadmon, Junio C Hamano, Justin Tobler, Karthik Nayak, Koji Nakamaru, Kousik Sanagavarapu, Kristoffer Haugsbakk, Linus Arver, Oswald Buddenhagen, Patrick Steinhardt, Philippe Blain, Phillip Wood, Piotr Szlazak, Ramsay Jones, Rasmus Villemoes, René Scharfe, Rubén Justo, shejialuo, Sören Krecker, Sven Strickroth, Taylor Blau, Toon Claes, Wolfgang Müller, and Xing Xin. [*] We are counting not just the authorship contribution but issue reporting, mentoring, helping and reviewing that are recorded in the commit trailers. ---------------------------------------------------------------- Git v2.48 Release Notes (draft) =============================== UI, Workflows & Features ------------------------ * A new configuration variable remote.<name>.serverOption makes the transport layer act as if the --serverOption=<value> option is given from the command line. * "git rebase --rebase-merges" now uses branch names as labels when able. * Describe the policy to introduce breaking changes. * Teach 'git notes add' and 'git notes append' a new '-e' flag, instructing them to open the note in $GIT_EDITOR before saving. * Documentation for "git bundle" saw improvements to more prominently call out the use of '--all' when creating bundles. * Drop support for older libcURL and Perl. * End-user experience of "git mergetool" when the command errors out has been improved. * "git bundle --unbundle" and "git clone" running on a bundle file both learned to trigger fsck over the new objects with configurable fck check levels. Performance, Internal Implementation, Development Support etc. -------------------------------------------------------------- * Document "amlog" notes. * The way AsciiDoc is used for SYNOPSIS part of the manual pages has been revamped. The sources, at least for the simple cases, got vastly pleasant to work with. * The reftable library is now prepared to expect that the memory allocation function given to it may fail to allocate and to deal with such an error. * An extra worktree attached to a repository points at each other to allow finding the repository from the worktree and vice versa possible. Turn this linkage to relative paths. * Enable Windows-based CI in GitLab. * Commands that can also work outside Git have learned to take the repository instance "repo" when we know we are in a repository, and NULL when we are not, in a parameter. The uses of the_repository variable in a few of them have been removed using the new calling convention. * The reftable sub-system grew a new reftable-specific strbuf replacement to reduce its dependency on Git-specific data structures. * The ref-filter machinery learns to recognize and avoid cases where sorting would be redundant. * Various platform compatibility fixes split out of the larger effort to use Meson as the primary build tool. * Treat ECONNABORTED the same as ECONNRESET in 'git credential-cache' to work around a possible Cygwin regression. This resolves a race condition caused by changes in Cygwin's handling of socket closures, allowing the client to exit cleanly when encountering ECONNABORTED. * Demonstrate an assertion failure in 'git mv'. * Documentation update to clarify that 'uploadpack.allowAnySHA1InWant' implies both 'allowTipSHA1InWant' and 'allowReachableSHA1InWant'. * Replace various calls to atoi() with strtol_i() and strtoul_ui(), and add improved error handling. * Documentation updates to 'git-update-ref(1)'. * Update the project's CodingGuidelines to discourage naming functions with a "_1()" suffix. * Updates the '.clang-format' to match project conventions. * Centralize documentation for repository extensions into a single place. * Buildfix and upgrade of Clar to a newer version. * Documentation mark-up updates. * Renaming a handful of variables and structure fields. * Fix for clar unit tests to support CMake build. * C23 compatibility updates. * GCC 15 compatibility updates. * We now ensure "index-pack" is used with the "--promisor" option only during a "git fetch". * The migration procedure between two ref backends has been optimized. * "git fsck" learned to issue warnings on "curiously formatted" ref contents that have always been taken valid but something Git wouldn't have written itself (e.g., missing terminating end-of-line after the full object name). * Work around Coverity warning that would not trigger in practice. * Built-in Git subcommands are supplied the repository object to work with; they learned to do the same when they invoke sub-subcommands. * Drop support for ancient environments in various CI jobs. * Isolates the reftable subsystem from the rest of Git's codebase by using fewer pieces of Git's infrastructure. * Optimize reading random references out of the reftable backend by allowing reuse of iterator objects. * Backport oss-fuzz tests for us to our codebase. * Introduce a new repository extension to prevent older Git versions from mis-interpreting worktrees created with relative paths. * Yet another "pass the repository through the callchain" topic. * "git describe" learned to stop digging the history needlessly deeper. * Build procedure update plus introduction of Meson based builds. Fixes since v2.47 ----------------- * Doc update to clarify how periodical maintenance are scheduled, spread across time to avoid thundering hurds. * Use after free and double freeing at the end in "git log -L... -p" had been identified and fixed. * On macOS, fsmonitor can fall into a race condition that results in a client waiting forever to be notified for an event that have already happened. This problem has been corrected. * "git maintenance start" crashed due to an uninitialized variable reference, which has been corrected. * Fail gracefully instead of crashing when attempting to write the contents of a corrupt in-core index as a tree object. * A "git fetch" from the superproject going down to a submodule used a wrong remote when the default remote names are set differently between them. * Fixes compile time warnings with 64-bit MSVC. * Teaches 'shortlog' to explicitly use SHA-1 when operating outside of a repository. * Fix 'git grep' regression on macOS by disabling lookahead when encountering invalid UTF-8 byte sequences. * The dumb-http code regressed when the result of re-indexing a pack yielded an *.idx file that differs in content from the *.idx file it downloaded from the remote. This has been corrected by no longer relying on: the *.idx file we got from the remote. * When called with '--left-right' and '--use-bitmap-index', 'rev-list' will produce output without any left/right markers, which has been corrected. * More leakfixes. * Test modernization. * The "--shallow-exclude=<ref>" option to various history transfer commands takes a ref, not an arbitrary revision. * A regression where commit objects missing from a commit-graph can cause an infinite loop when doing a fetch in a partial clone has been fixed. * The MinGW compatibility layer has been taught to support POSIX semantics for atomic renames when other process(es) have a file opened at the destination path. * "git gc" discards any objects that are outside promisor packs that are referred to by an object in a promisor pack, and we do not refetch them from the promisor at runtime, resulting an unusable repository. Work it around by including these objects in the referring promisor pack at the receiving end of the fetch. * Avoid build/test breakage on a system without working malloc debug support dynamic library. (merge 72ad6dc368 jk/test-malloc-debug-check later to maint). * Double-free fix. (merge fe17a25905 jk/fetch-prefetch-double-free-fix later to maint). * Use of some uninitialized variables in "git difftool" has been corrected. * Object reuse code based on multi-pack-index sent an unwanted copy of object. (merge e199290592 tb/multi-pack-reuse-dupfix later to maint). * "git fast-import" can be tricked into a replace ref that maps an object to itself, which is a useless thing to do. (merge 5e904f1a4a en/fast-import-avoid-self-replace later to maint). * The ref-transaction hook triggered for reflog updates, which has been corrected. (merge b886db48c6 kn/ref-transaction-hook-with-reflog later to maint). * Give a bit of advice/hint message when "git maintenance" stops finding a lock file left by another instance that still is potentially running. (merge ba874d1dac ps/gc-stale-lock-warning later to maint). * Use the right helper program to measure file size in performance tests. (merge 3f97f1bce6 tb/use-test-file-size-more later to maint). * A double-free that may not trigger in practice by luck has been corrected in the reference resolution code. (merge b6318cf23a sj/refs-symref-referent-fix later to maint). * The sequencer failed to honor core.commentString in some places. * Describe a case where an option value needs to be spelled as a separate argument, i.e. "--opt val", not "--opt=val". (merge 1bc1e94091 jc/doc-opt-tilde-expand later to maint). * Loosen overly strict ownership check introduced in the recent past, to keep the promise "cloning a suspicious repository is a safe first step to inspect it". (merge 0ffb5a6bf1 bc/allow-upload-pack-from-other-people later to maint). * "git fast-import" learned to reject paths with ".." and "." as their components to avoid creating invalid tree objects. (merge 8cb4c6e62f en/fast-import-verify-path later to maint). * The --ancestry-path option is designed to be given a commit that is on the path, which was not documented, which has been corrected. (merge bc1a980759 kk/doc-ancestry-path later to maint). * "git tag" has been taught to refuse to create refs/tags/HEAD as such a tag will be confusing in the context of UI provided by the Git Porcelain commands. (merge bbd445d5ef jc/forbid-head-as-tagname later to maint). * The advice messages now tell the newer 'git config set' command to set the advice.token configuration variable to squelch a message. (merge 6c397d0104 bf/explicit-config-set-in-advice-messages later to maint). * The syntax ":/<text>" to name the latest commit with the matching text was broken with a recent change, which has been corrected. (merge 0ff919e87a ps/commit-with-message-syntax-fix later to maint). * Fix performance regression of a recent "fatten promisor pack with local objects" protection against an unwanted gc. * Other code cleanup, docfix, build fix, etc. (merge 77af53f56f aa/t7300-modernize later to maint). (merge dcd590a39d bf/t-readme-mention-reftable later to maint). (merge 68e3c69efa kh/trailer-in-glossary later to maint). (merge 91f88f76e6 tb/boundary-traversal-fix later to maint). (merge 168ebb7159 jc/doc-error-message-guidelines later to maint). (merge 18693d7d65 kh/doc-bundle-typofix later to maint). (merge e2f5d3b491 kh/doc-update-ref-grammofix later to maint). ---------------------------------------------------------------- Changes since v2.47.0 are as follows: Abraham Samuel Adekunle (2): t7300-clean.sh: use test_path_* helper functions for error logging notes: teach the -e option to edit messages in editor Alejandro R. Sedeño (1): Makefile: adjust sed command for generating "clar-decls.h" Andrew Kreimer (10): compat: fix typos contrib: fix typos t/unit-tests: fix typos t/perf: fix typos t/helper: fix a typo t: fix typos t: fix typos t1016: clean up style t: fix typos t1016: clean up style Bence Ferdinandy (2): t/README: add missing value for GIT_TEST_DEFAULT_REF_FORMAT advice: suggest using subcommand "git config set" Caleb White (12): worktree: refactor infer_backlink() to use *strbuf worktree: link worktrees with relative paths worktree: add test for path handling in linked worktrees doc: consolidate extensions in git-config documentation setup: correctly reinitialize repository version worktree: add `relativeWorktrees` extension worktree: refactor infer_backlink return worktree: add `write_worktree_linking_files()` function worktree: add relative cli/config options to `add` command worktree: add relative cli/config options to `move` command worktree: add relative cli/config options to `repair` command worktree: refactor `repair_worktree_after_gitdir_move()` Chizoba ODINAKA (1): t6050: avoid pipes with upstream Git commands Daniel Black (1): submodule: correct remote name with fetch Derrick Stolee (1): line-log: protect inner strbuf from free Elijah Newren (5): upload-pack: fix ambiguous error message doc: correct misleading descriptions for --shallow-exclude fast-import: avoid making replace refs point to themselves fast-import: disallow "." and ".." path components fast-import: disallow more path components Eric Sesterhenn (3): fuzz: port fuzz-credential-from-url-gently from OSS-Fuzz fuzz: port fuzz-parse-attr-line from OSS-Fuzz fuzz: port fuzz-url-decode-mem from OSS-Fuzz Eric Sunshine (1): worktree: repair copied repository and linked worktrees Jean-Noël Avila (9): doc: introduce a synopsis typesetting doc: update the guidelines to reflect the current formatting rules doc: apply synopsis simplification on git-clone and git-init doc: git-add.txt: convert to new style convention doc: git-diff: apply new documentation guidelines doc: git-diff: apply format changes to diff-options doc: git-diff: apply format changes to diff-format doc: git-diff: apply format changes to diff-generate-patch doc: git-diff: apply format changes to config part Jeff King (36): line-log: use diff_line_prefix() instead of custom helper diff: drop line_prefix_length field diff: return const char from output_prefix callback diff: return line_prefix directly when possible diff: store graph prefix buf in git_graph struct simple-ipc: split async server initialization and running fsmonitor: initialize fs event listener before accepting clients midx: avoid duplicate packed_git entries t5550: count fetches in "previously-fetched .idx" test dumb-http: store downloaded pack idx as tempfile packfile: drop has_pack_index() packfile: drop sha1_pack_name() packfile: drop sha1_pack_index_name() packfile: warn people away from parse_packed_git() http-walker: use object_id instead of bare hash packfile: convert find_sha1_pack() to use object_id packfile: use object_id in find_pack_entry_one() packfile: use oidread() instead of hashcpy() to fill object_id rev-list: skip bitmap traversal for --left-right t6120: demonstrate weakness in disjoint-root handling t/perf: add tests for git-describe describe: stop digging for max_candidates+1 describe: stop traversing when we run out of names test-lib: check malloc debug LD_PRELOAD before using fetch: adjust refspec->raw_nr when filtering prefetch refspecs refspec: drop separate raw_nr count refspec: store raw refspecs inside refspec_item test-lib: move malloc-debug setup after $PATH setup object-file: prefer array-of-bytes initializer for hash literals object-file: drop confusing oid initializer of empty_tree struct object-file: move empty_tree struct into find_cached_object() object-file: drop oid field from find_cached_object() return value object-file: treat cached_object values as const object-file: inline empty tree and blob literals t9300: test verification of renamed paths describe: split "found all tags" and max_candidates logic Johannes Schindelin (1): docs: fix the `maintain-git` links in `technical/platform-support` John Cai (3): git: pass in repo to builtin based on setup_git_directory_gently annotate: remove usage of the_repository global archive: remove the_repository global variable Jonathan Tan (10): t0410: make test description clearer t0410: use from-scratch server t5300: move --window clamp test next to unclamped Revert "fetch-pack: add a deref_without_lazy_fetch_extended()" fetch-pack: die if in commit graph but not obj db index-pack: repack local links into promisor packs index-pack: teach --promisor to forbid pack name index-pack --promisor: dedup before checking links index-pack --promisor: don't check blobs index-pack --promisor: also check commits' trees Josh Heinrichs (1): git-config.1: remove value from positional args in unset usage Josh Soref (2): doc: update links to current pages doc: switch links to https Junio C Hamano (22): doc: clarify <src> in refspec syntax Start the 2.48 cycle BreakingChanges: early adopter option The eighth batch The ninth batch Clean up RelNotes for 2.48 Prepare for 2.47.1 The tenth batch The eleventh batch Git 2.47.1 doc: option value may be separate for valid reasons The twelfth batch CodingGuidelines: a handful of error message guidelines refs: move ref name helpers around refs: drop strbuf_ prefix from helpers t5604: do not expect that HEAD can be a valid tagname tag: "git tag" refuses to use HEAD as a tagname The thirteenth batch The fourteenth batch The fifteenth batch The sixteenth batch Git 2.48-rc0 Justin Tobler (4): bundle: add bundle verification options type bundle: support fsck message configuration fetch-pack: split out fsck config parsing transport: propagate fsck configuration during bundle fetch Kai Koponen (1): doc: mention rev-list --ancestry-path restrictions Karthik Nayak (23): loose: don't rely on repository global state clang-format: re-adjust line break penalties clang-format: align consecutive macro definitions CodingGuidelines: discourage arbitrary suffixes in function names refs: don't invoke reference-transaction hook for reflogs builtin: pass repository to sub commands packfile: add repository to struct `packed_git` packfile: use `repository` from `packed_git` directly packfile: pass `repository` to static function in the file packfile: pass down repository to `odb_pack_name` packfile: pass down repository to `has_object[_kept]_pack` packfile: pass down repository to `for_each_packed_object` config: make `delta_base_cache_limit` a non-global variable config: make `packed_git_(limit|window_size)` non-global variables midx: add repository to `multi_pack_index` struct midx-write: pass down repository to static functions midx-write: use `revs->repo` inside `read_refs_snapshot` write-midx: add repository field to `write_midx_context` midx-write: pass down repository to `write_midx_file[_only]` midx: cleanup internal usage of `the_repository` and `the_hash_algo` midx: pass `repository` to `load_multi_pack_index` midx: pass down `hash_algo` to functions using global variables midx: inline the `MIDX_MIN_SIZE` definition Kousik Sanagavarapu (1): t4205: fix typo in 'NUL termination with --stat' Kristoffer Haugsbakk (20): doc: merge-tree: improve example script checkout: refer to other-worktree branch, not ref Documentation/git-update-ref.txt: drop “flag” Documentation/git-update-ref.txt: remove safety paragraphs Documentation/git-update-ref.txt: demote symlink to last section Documentation/git-update-ref.txt: remove confusing paragraph Documentation/git-update-ref.txt: discuss symbolic refs Documentation: mutually link update-ref and symbolic-ref SubmittingPatches: tags -> trailers t7001: add failure test which triggers assertion Documentation/glossary: describe "trailer" Documentation/git-bundle.txt: mention full backup example Documentation/git-bundle.txt: remove old `--all` example Documentation/git-bundle.txt: mention --all in spec. refs Documentation/git-bundle.txt: discuss naïve backups sequencer: comment checked-out branch properly sequencer: comment `--reference` subject line properly sequencer: comment commit messages properly Documentation/git-bundle.txt: fix word join typo Documentation/git-update-ref.txt: add missing word Linus Arver (1): trailer: spread usage of "trailer_block" language Nicolas Guichard (3): load_branch_decorations: fix memory leak with non-static filters rebase-update-refs: extract load_branch_decorations rebase-merges: try and use branch names as labels Oswald Buddenhagen (2): git-gui: strip comments and consecutive empty lines from commit messages git-gui: strip commit messages less aggressively Patrick Steinhardt (197): builtin/annotate: fix leaking args vector read-cache: fix leaking hash context in `do_write_index()` scalar: fix leaking repositories shell: fix leaking strings wt-status: fix leaking buffer with sparse directories submodule: fix leaking submodule entry list builtin/stash: fix leaking `pathspec_from_file` builtin/pack-redundant: fix various memory leaks builtin/clone: fix leaking repo state when cloning with bundle URIs t/helper: fix leaking repository in partial-clone helper builtin/revert: fix leaking `gpg_sign` and `strategy` config diff: improve lifecycle management of diff queues line-log: fix several memory leaks pseudo-merge: fix various memory leaks pseudo-merge: fix leaking strmap keys pack-bitmap-write: fix leaking OID array midx-write: fix leaking buffer revision: fix memory leaks when rewriting parents revision: fix leaking saved parents pack-write: fix return parameter of `write_rev_file_order()` t/helper: fix leaks in proc-receive helper remote: fix leaking push reports builtin/send-pack: fix leaking list of push options reftable/error: introduce out-of-memory error code reftable/basics: merge "publicbasics" into "basics" reftable: introduce `reftable_strdup()` reftable/basics: handle allocation failures in `reftable_calloc()` reftable/basics: handle allocation failures in `parse_names()` reftable/record: handle allocation failures on copy reftable/record: handle allocation failures when decoding records reftable/writer: handle allocation failures in `writer_index_hash()` reftable/writer: handle allocation failures in `reftable_new_writer()` reftable/merged: handle allocation failures in `merged_table_init_iter()` reftable/reader: handle allocation failures for unindexed reader reftable/reader: handle allocation failures in `reader_init_iter()` reftable/stack: handle allocation failures on reload reftable/stack: handle allocation failures in `reftable_new_stack()` reftable/stack: handle allocation failures in `stack_compact_range()` reftable/stack: handle allocation failures in auto compaction reftable/iter: handle allocation failures when creating indexed table iter reftable/blocksource: handle allocation failures reftable/block: handle allocation failures reftable/pq: handle allocation failures when adding entries reftable/tree: handle allocation failures reftable: handle trivial allocation failures reftable: fix calls to free(3P) reftable: introduce `REFTABLE_FREE_AND_NULL()` reftable/basics: ban standard allocator functions reftable/basics: fix segfault when growing `names` array fails cache-tree: refactor verification to return error codes cache-tree: detect mismatching number of index entries unpack-trees: detect mismatching number of cache-tree/index entries t7300: work around platform-specific behaviour with long paths on MinGW ci: create script to set up Git for Windows SDK ci: handle Windows-based CI jobs in GitLab CI gitlab-ci: introduce stages and dependencies gitlab-ci: exercise Git on Windows builtin/gc: fix crash when running `git maintenance start` t/test-lib: fix quoting of TEST_RESULTS_SAN_FILE t/test-lib: wire up NO_ICONV prerequisite t/lib-gitweb: test against the build version of gitweb t/lib-gpg: fix setup of GNUPGHOME in MinGW t1401: make invocation of tar(1) work with Win32-provided one t3404: work around platform-specific behaviour on macOS 10.15 t5500, t5601: skip tests which exercise paths with '[::1]' on Cygwin t7300: work around platform-specific behaviour with long paths on MinGW builtin/credential-cache: fix missing parameter for stub function http: fix build error on FreeBSD reftable: stop using `strbuf_addbuf()` reftable: stop using `strbuf_addf()` reftable/basics: provide new `reftable_buf` interface reftable: convert from `strbuf` to `reftable_buf` reftable/blocksource: adapt interface name t/unit-tests: check for `reftable_buf` allocation errors reftable/stack: adapt `format_name()` to handle allocation failures reftable/record: adapt `reftable_record_key()` to handle allocation failures reftable/stack: adapt `stack_filename()` to handle allocation failures reftable: handle trivial `reftable_buf` errors ref-filter: format iteratively with lexicographic refname sorting t/unit-tests: update clar to 206accb Makefile: extract script to generate clar declarations cmake: fix compilation of clar-based unit tests cmake: set up proper dependencies for generated clar headers compat/mingw: share file handles created via `CreateFileW()` compat/mingw: allow deletion of most opened files t6006: fix prereq handling with `test_format ()` builtin/ls-remote: plug leaking server options t/helper: fix leaks in "reach" test tool grep: fix leak in `grep_splice_or()` builtin/grep: fix leak with `--max-count=0` revision: fix leaking bloom filters diff-lib: fix leaking diffopts in `do_diff_cache()` pretty: clear signature check upload-pack: fix leaking URI protocols builtin/commit: fix leaking change data contents trailer: fix leaking trailer values trailer: fix leaking strbufs when formatting trailers builtin/commit: fix leaking cleanup config transport-helper: fix leaking import/export marks builtin/tag: fix leaking key ID on failure to sign combine-diff: fix leaking lost lines dir: release untracked cache data sparse-index: correctly free EWAH contents t/helper: stop re-initialization of `the_repository` t/helper: fix leaking buffer in "dump-untracked-cache" dir: fix leak when parsing "status.showUntrackedFiles" builtin/merge: release output buffer after performing merge list-objects-filter-options: work around reported leak on error compat/mingw: support POSIX semantics for atomic renames t/unit-tests: convert "clar-generate.awk" into a shell script cmake: use SH_EXE to execute clar scripts cmake: use verbatim arguments when invoking clar commands Makefile: let clar header targets depend on their scripts reftable/system: move "dir.h" to its only user reftable: explicitly handle hash format IDs reftable/system: stop depending on "hash.h" reftable/stack: stop using `fsync_component()` directly reftable/system: provide thin wrapper for tempfile subsystem reftable/stack: drop only use of `get_locked_file_path()` reftable/system: provide thin wrapper for lockfile subsystem builtin/gc: provide hint when maintenance hits a stale schedule lock refs: allow passing flags when setting up a transaction refs/files: move logic to commit initial transaction refs: introduce "initial" transaction flag refs/files: support symbolic and root refs in initial transaction refs: use "initial" transaction semantics to migrate refs refs: skip collision checks in initial transactions refs: don't normalize log messages with `REF_SKIP_CREATE_REFLOG` reftable/writer: optimize allocations by using a scratch buffer reftable/block: rename `block_writer::buf` variable reftable/block: optimize allocations by using scratch buffer builtin/blame: fix leaking blame entries with `--incremental` bisect: fix leaking good/bad terms when reading multipe times bisect: fix leaking string in `handle_bad_merge_base()` bisect: fix leaking `current_bad_oid` bisect: fix multiple leaks in `bisect_next_all()` bisect: fix leaking commit list items in `check_merge_base()` bisect: fix various cases where we leak commit list items line-log: fix leak when rewriting commit parents strvec: introduce new `strvec_splice()` function git: refactor alias handling to use a `struct strvec` git: refactor builtin handling to use a `struct strvec` split-index: fix memory leak in `move_cache_to_base_index()` builtin/sparse-checkout: fix leaking sanitized patterns help: refactor to not use globals for reading config help: fix leaking `struct cmdnames` help: fix leaking return value from `help_unknown_cmd()` builtin/help: fix leaks in `check_git_cmd()` builtin/init-db: fix leaking directory paths builtin/branch: fix leaking sorting options t/helper: fix leaking commit graph in "read-graph" subcommand global: drop `UNLEAK()` annotation git-compat-util: drop now-unused `UNLEAK()` macro t5601: work around leak sanitizer issue t: mark some tests as leak free t: remove unneeded !SANITIZE_LEAK prerequisites test-lib: unconditionally enable leak checking t: remove TEST_PASSES_SANITIZE_LEAK annotations t7900: fix host-dependent behaviour when testing git-maintenance(1) refs: adapt `initial_transaction` flag to be unsigned reftable: rename scratch buffer bisect: address Coverity warning about potential double free refs/reftable: encapsulate reftable stack refs/reftable: handle reloading stacks in the reftable backend reftable/stack: add accessor for the hash ID refs/reftable: figure out hash via `reftable_stack` refs/reftable: read references via `struct reftable_backend` refs/reftable: refactor reading symbolic refs to use reftable backend refs/reftable: refactor reflog expiry to use reftable backend reftable/stack: add mechanism to notify callers on reload reftable/merged: drain priority queue on reseek refs/reftable: reuse iterators when reading refs Makefile: use common template for GIT-BUILD-OPTIONS Makefile: consistently use @PLACEHOLDER@ to substitute Makefile: refactor GIT-VERSION-GEN to be reusable Makefile: propagate Git version via generated header Makefile: generate "git.rc" via GIT-VERSION-GEN Makefile: generate doc versions via GIT-VERSION-GEN Makefile: consistently use PERL_PATH Makefile: extract script to massage Perl scripts Makefile: use "generate-perl.sh" to massage Perl library Makefile: extract script to massage Shell scripts Makefile: extract script to massage Python scripts Makefile: extract script to generate gitweb.cgi Makefile: extract script to generate gitweb.js Makefile: refactor generators to be PWD-independent Makefile: allow "bin-wrappers/" directory to exist Makefile: write absolute program path into bin-wrappers Makefile: simplify building of templates Documentation: allow sourcing generated includes from separate dir Documentation: teach "cmd-list.perl" about out-of-tree builds Documentation: extract script to generate a list of mergetools t: better support for out-of-tree builds t: allow overriding build dir Documentation: add comparison of build systems Introduce support for the Meson build system object-name: fix reversed ordering with ":/<text>" revisions Philippe Blain (6): Makefile: fix dependency for $(UNIT_TEST_DIR)/clar/clar.o completion: complete '--tool-help' in 'git mergetool' git-mergetool--lib.sh: use TOOL_MODE when erroring about unknown tool git-mergetool--lib.sh: add error message if 'setup_user_tool' fails git-mergetool--lib.sh: add error message for unknown tool variant git-difftool--helper.sh: exit upon initialize_merge_tool errors Piotr Szlazak (1): doc: document how uploadpack.allowAnySHA1InWant impact other allow options Ramsay Jones (1): credential-cache: treat ECONNABORTED like ECONNRESET René Scharfe (1): grep: disable lookahead on error Rubén Justo (1): strvec: `strvec_splice()` to a statically initialized vector Seyi Kuforiji (2): t7011: ensure no whitespace after redirect t9101: ensure no whitespace after redirect Shubham Kanodia (1): doc: add a note about staggering of maintenance Simon Marchi (1): builtin/difftool: intialize some hashmap variables Sven Strickroth (1): global: Fix duplicate word typos Sören Krecker (1): mingw.c: Fix complier warnings for a 64 bit msvc Taylor Blau (13): Documentation: mention the amlog in howto/maintain-git.txt The second batch The third batch The third batch The fifth batch The sixth batch The seventh batch t5332-multi-pack-reuse.sh: demonstrate duplicate packing failure pack-objects: only perform verbatim reuse on the preferred pack pack-bitmap.c: typofix in `find_boundary_objects()` t/perf: use 'test_file_size' in more places Makefile(s): avoid recipe prefix in conditional statements packfile.c: remove unnecessary prepare_packed_git() call Tobias Boesch (1): git gui: add directly calling merge tool from configuration Toon Claes (1): bundle-uri: plug leak in unbundle_from_file() Usman Akinyemi (5): t3404: avoid losing exit status with focus on `git show` and `git cat-file` t3404: replace test with test_line_count() daemon: replace atoi() with strtoul_ui() and strtol_i() merge: replace atoi() with strtol_i() for marker size validation imap: replace atoi() with strtol_i() for UIDVALIDITY and UIDNEXT parsing Wolfgang Müller (1): builtin/shortlog: explicitly set hash algo when there is no repo Xing Xin (6): transport: introduce parse_transport_option() method remote: introduce remote.<name>.serverOption configuration transport.c::handshake: make use of server options from remote fetch: respect --server-option when fetching multiple remotes ls-remote: leakfix for not clearing server_options Documentation/gitprotocol-v2.txt: fix a slight inconsistency in format brian m. carlson (18): git-curl-compat: remove check for curl 7.21.5 git-curl-compat: remove check for curl 7.25.0 git-curl-compat: remove check for curl 7.34.0 git-curl-compat: remove check for curl 7.39.0 git-curl-compat: remove check for curl 7.43.0 git-curl-compat: remove check for curl 7.44.0 git-curl-compat: remove check for curl 7.52.0 git-curl-compat: remove check for curl 7.53.0 git-curl-compat: remove check for curl 7.56.0 INSTALL: document requirement for libcurl 7.61.0 Require Perl 5.26.0 gitweb: make use of s///r gitlab-ci: switch from Ubuntu 16.04 to 20.04 ci: remove clause for Ubuntu 16.04 Add additional CI jobs to avoid accidental breakage Allow cloning from repositories owned by another user index-pack: rename struct thread_local reflog: rename unreachable shejialuo (10): ref: initialize "fsck_ref_report" with zero ref: check the full refname instead of basename ref: initialize ref name outside of check functions ref: support multiple worktrees check for refs ref: port git-fsck(1) regular refs check for files backend ref: add more strict checks for regular refs ref: add basic symref content check for files backend ref: check whether the target of the symref is a ref ref: add symlink ref content check for files backend ref-cache: fix invalid free operation in `free_ref_entry`