Skip to contentSkip to conversation

Git v2.48.0

ANNOUNCE Junio C Hamano 1 participant 1 message Jan 10, 2025

lore
Share & tools
lore
#0 lore raw

The latest feature release Git v2.48.0 is now available at the usual places. It is comprised of 605 non-merge commits since v2.47.0, contributed by 93 people, 35 of which are new faces [*].

The tarballs are found at:

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

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

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

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

Aarni Koskela, Abraham Samuel Adekunle, Alejandro Barreto, Bence Ferdinandy, Caleb White, Chizoba ODINAKA, Christoph Sommer, Daniel Black, Daniel Engberg, David Gstir, Ed Reel, Eric Mills, Ethiraric, fox, Fredrik, Jaroslav Lobačevski, Josh Heinrichs, Josh Poimboeuf, Kai Koponen, karthik nayak, Kev Kloss, Liu Zhongbo, Meet Soni, Miguel Rincon Barahona, Monika Kairaitytė, Nicolas Guichard, Russell Stuart, Sam James, Seyi Kuforiji, Shubham Kanodia, Simon Marchi, Tobias Boesch, Tobias Pietzsch, Usman Akinyemi, and Yuri Konotopov.

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

Abhijeet Sonar, Alejandro R. Sedeño, Alexander Shopov, Andrew Kreimer, Arkadii Yakovets, Avi Halachmi (:avih), Bagas Sanjaya, brian m. carlson, Dario Gjorgjevski, Derrick Stolee, Elijah Newren, Eli Schwartz, Emir SARI, 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, Kate Golovanova, Koji Nakamaru, Kousik Sanagavarapu, Kristoffer Haugsbakk, Kyle Lippincott, Linus Arver, Lumynous, Martin Ågren, Matthias Rüster, Oswald Buddenhagen, Patrick Steinhardt, Peter Krefting, Philippe Blain, Phillip Wood, Piotr Szlazak, Ralf Thielow, Ramsay Jones, Randall S. Becker, Rasmus Villemoes, René Scharfe, Rubén Justo, Seija Kijin, shejialuo, Sören Krecker, Sven Strickroth, Taylor Blau, Teng Long, Toon Claes, Vũ Tiến Hưng, Wolfgang Müller, Xing Xin, and Yi-Jyun Pan.

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

We plan to have 2.48.1 early next week.

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

Git v2.48 Release Notes
=======================

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.

* When "git fetch $remote" notices that refs/remotes/$remote/HEAD is missing and discovers what branch the other side points with its HEAD, refs/remotes/$remote/HEAD is updated to point to it.

* "git fetch" honors "remote.<remote>.followRemoteHEAD" settings to tweak the remote-tracking HEAD in "refs/remotes/<remote>/HEAD".

* "git range-diff" learned to optionally show and compare merge commits in the ranges being compared, with the --diff-merges option.

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 more 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. Use relative paths for this linkage.

* 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.

* Update '.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 treated as valid but that 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.

* Isolate 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 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.

* Recent reftable updates mistook a NULL return from a request for 0-byte allocation as OOM and died unnecessarily, which has been corrected.

* Reftable backend adds check for upper limit of log's update_index.

* Start working to make the codebase buildable with -Wsign-compare.

* Regression fix for 'show-index' when run outside of a repository.

* The meson-build procedure is integrated into CI to catch and prevent bitrotting.

* "git refs migrate" learned to also migrate the reflog data across backends.

* The developer documentation has been updated to give the latest info on gitk and git-gui maintainer.

* CI jobs that run threaded programs under LSan has been giving false positives from time to time, which has been worked around.

Fixes since v2.47
-----------------

* Doc update to clarify how periodical maintenance are scheduled, spread across time to avoid thundering herds.

* 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 about an event that has 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 around it 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 since such a tag will be confusing in the context of the 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.

* "git log -p --remerge-diff --reverse" was completely broken. (merge f94bfa1516 js/log-remerge-keep-ancestry later to maint).

* "git bundle create" with an annotated tag on the positive end of the revision range had a workaround code for older limitation in the revision walker, which has become unnecessary.
(merge dd1072dfa8 tc/bundle-with-tag-remove-workaround later to maint).

* GitLab CI updates.
(merge c6b43f663e ps/ci-gitlab-update later to maint).

* Code to reuse objects based on bitmap contents have been tightened to avoid race condition even when multiple packs are involved. (merge 62b3ec8a3f tb/bitmap-fix-pack-reuse later to maint).

* An earlier "csum-file checksum does not have to be computed with sha1dc" topic had a few code paths that had initialized an implementation of a hash function to be used by an unmatching hash by mistake, which have been corrected.
(merge 599a63409b ps/weak-sha1-for-tail-sum-fix later to maint).

* 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). (merge 8525e92886 mh/doc-windows-home-env later to maint).

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

Changes since v2.47.0 are as follows:

Abhijeet Sonar (2):
show-index: fix uninitialized hash function
t5300: add test for 'show-index --object-format'

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 Barreto (1):
Document HOME environment variable

Alejandro R. Sedeño (1):
Makefile: adjust sed command for generating "clar-decls.h"

Alexander Shopov (4):
git-gui i18n: Updated Bulgarian translation (579t)
gitk: Update Bulgarian translation (327t) Update the official repo of gitk
l10n: bg.po: Updated Bulgarian translation (5804t)

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

Arkadii Yakovets (1):

      l10n: uk: v2.48 update

Avi Halachmi (:avih) (3):
gitk: UI text: change "SHA1 ID" to "Commit ID"
gitk: prefs dialog: refine Auto-select UI
gitk: support auto-copy comit ID to primary clipboard

Bagas Sanjaya (1):

      l10n: po-id for 2.48

Bence Ferdinandy (17):
t/README: add missing value for GIT_TEST_DEFAULT_REF_FORMAT t/t5505-remote: set default branch to main t/t5505-remote: test failure of set-head
refs: standardize output of refs_read_symbolic_ref
refs: atomically record overwritten ref in update_symref remote set-head: refactor for readability
remote set-head: better output for --auto
refs: add TRANSACTION_CREATE_EXISTS error
refs: add create_only option to refs_update_symref_extended
fetch: set remote/HEAD if it does not exist
fetch set_head: handle mirrored bare repositories
fetch: add configuration for set_head behaviour fetch set_head: move warn advice into advise_if_enabled fetch set_head: add warn-if-not-$branch option remote set-head: set followRemoteHEAD to "warn" if "always"
advice: suggest using subcommand "git config set"
fetch: fix erroneous set_head advice message

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

Christoph Sommer (2):
gitk: make headings of preferences bold
gitk: add text wrapping preferences

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

Emir SARI (1):
l10n: tr: Update Turkish translations for 2.48

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

Ethiraric (1):
l10n: fr.po: Minor improvements

Fredrik (1):
l10n: sv.po, fixed swedish typos

Jean-Noël Avila (10):
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
l10n: fr: v2.48.0

Jeff King (46):
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
prio-queue: use size_t rather than int for size
test-lib: use individual lsan dir for --stress runs Revert "index-pack: spawn threads atomically"
thread-utils: introduce optional barrier type
index-pack: work around LSan threading race with barrier
grep: work around LSan threading race with barrier
test-lib: rely on logs to detect leaks
test-lib: simplify leak-log checking
test-lib: check leak logs for presence of DEDUP_TOKEN
test-lib: ignore leaks in the sanitizer's thread code

Johannes Schindelin (13):
docs: fix the maintain-git links in technical/platform-support
log: --remerge-diff needs to keep around commit parents
range-diff: optionally include merge commits' diffs in the analysis
range-diff: introduce the convenience option --remerge-diff
mingw_rename: do support directory renames
GitHub ci(windows): speed up initializing Git for Windows' minimal SDK again
cmake: better support for out-of-tree builds follow-up cmake(mergetools): better support for out-of-tree builds
cmake: use the correct file name for the Perl header
cmake: put the Perl modules into the correct location again cmake/vcxproj: stop special-casing remote-ext
t-reftable-basics: allow for malloc to be #defined
GIT-VERSION-GEN: allow it to be run in parallel

Johannes Sixt (2):
git-gui: Remove forced rescan of stat-dirty files.
gitk: offer "Copy commit ID to X11 selection" only on X11

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 (31):
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
csum-file: fix -Wsign-compare warning on 32-bit platform
fetch: do not ask for HEAD unnecessarily
The fifteenth batch
The sixteenth batch
Git 2.48-rc0
Finishing touches before 2.48-rc1
Hopefully the final batch before 2.48-rc1
Git 2.48-rc1
A bit more post Git 2.48-rc1
Revert barrier-based LSan threading race workaround Git 2.48-rc2
Git 2.48

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 (33):
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 reftable/writer: ensure valid range for log's update_index
refs: include committer info in ref_update struct
refs: add index field to struct ref_udpate refs/files: add count field to ref_lock
refs: extract out refname verification in transactions
refs: add committer_info to ref_transaction_add_update()
refs: introduce the ref_transaction_update_reflog function
refs: allow multiple reflog entries for the same refname
refs: add support for migrating reflogs
refs: mark invalid refname message for translation

Kousik Sanagavarapu (1):
t4205: fix typo in 'NUL termination with --stat'

Kristoffer Haugsbakk (21):
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 RelNotes/2.48.0: fix typos etc.

Kyle Lippincott (1):
doc: remove extra quotes in generated docs

Linus Arver (1):
trailer: spread usage of "trailer_block" language

Martin Ågren (5):
asciidoctor-extensions.rb.in: delete existing <refmiscinfo/> asciidoctor-extensions.rb.in: add missing word asciidoctor-extensions.rb.in: inject GIT_DATE git.txt: fix heading line of tildes
gitcli.txt: typeset pathnames as monospace

Meet Soni (1):
t7611: replace test -f with test_path_is* helpers

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 (255):
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
git-compat-util: introduce macros to disable "-Wsign-compare" warnings compat/regex: explicitly ignore "-Wsign-compare" warnings compat/win32: fix -Wsign-compare warning in "wWinMain()"
global: mark code units that generate warnings with -Wsign-compare config.mak.dev: drop -Wno-sign-compare
diff.h: fix index used to loop through unsigned integer
pkt-line: fix -Wsign-compare warning on 32 bit platform
global: trivial conversions to fix -Wsign-compare warnings
daemon: fix loops that have mismatching integer types
daemon: fix type of max_connections
gpg-interface: address -Wsign-comparison warnings builtin/blame: fix type of length variable when emitting object ID builtin/patch-id: fix type of get_one_patchid()
scalar: address -Wsign-compare warnings
t/helper: don't depend on implicit wraparound
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: consistently use PERL_PATH
Makefile: generate "git.rc" via GIT-VERSION-GEN
Makefile: extract script to massage Perl scripts
Makefile: generate doc versions via GIT-VERSION-GEN
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
gitlab-ci: update macOS images to Sonoma
ci/lib: remove duplicate trap to end "CI setup" group
ci/lib: do not interpret escape sequences in group () arguments ci/lib: fix "CI setup" sections with GitLab CI
ci/lib: support custom output directories when creating test artifacts
Makefile: drop -DSUPPRESS_ANNOTATED_LEAKS
t/unit-tests: rename clar-based unit tests to have a common prefix
meson: detect missing tests at configure time
Makefile: detect missing Meson tests
t: fix out-of-tree tests for some git-p4 tests
t: introduce compatibility options to clar-based tests
ci: wire up Meson builds
meson: skip gitweb build when Perl is disabled
Makefile: stop including "GIT-VERSION-FILE" in docs
Makefile: drop unneeded indirection for GIT-VERSION-GEN outputs
Makefile: introduce template for GIT-VERSION-GEN
GIT-VERSION-GEN: fix overriding GIT_VERSION
GIT-VERSION-GEN: fix overriding GIT_BUILT_FROM_COMMIT and GIT_DATE
meson: add options to override build information reftable/stack: don't perform auto-compaction with less than two tables reftable/merged: fix zero-sized allocation when there are no readers reftable/stack: fix zero-sized allocation when there are no readers reftable/basics: return NULL on zero-sized allocations
GIT-BUILD-OPTIONS: sort variables alphabetically
GIT-BUILD-OPTIONS: wire up NO_GITWEB option
meson: enable auto-discovered "gitweb"
meson: wire up support for AsciiDoctor
meson: properly wire up dependencies for our docs
meson: fix generation of merge tools
meson: generate HTML pages for all man page categories
Documentation: inline user-manual.conf
meson: generate user manual
Documentation: refactor "api-index.sh" for out-of-tree builds
Documentation: refactor "howto-index.sh" for out-of-tree builds
meson: generate articles
meson: install static files for HTML documentation
t/Makefile: make "check-meson" work with Dash
Documentation: wire up sanity checks for Meson
bulk-checkin: fix segfault with unsafe SHA1 backend builtin/fast-import: fix segfault with unsafe SHA1 backend
ci: exercise unsafe OpenSSL backend
builtin/blame: fix out-of-bounds read with excessive --abbrev builtin/blame: fix out-of-bounds write with blank boundary commits

Peter Krefting (2):
gitk: sv.po: Update Swedish translation (323t)
l10n: sv.po: Update Swedish translation

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

Ralf Thielow (1):
l10n: Update German translation

Ramsay Jones (1):
credential-cache: treat ECONNABORTED like ECONNRESET

René Scharfe (5):
grep: disable lookahead on error
reftable: avoid leaks on realloc error
reftable: fix allocation count on realloc error
reftable: handle realloc error in parse_names()
t-reftable-merged: handle realloc errors

Rubén Justo (1):
strvec: strvec_splice() to a statically initialized vector

Sam James (1):
meson: fix perl dependencies

Seija Kijin (1):
git: use calloc instead of malloc + memset where possible

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 (14):
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 pack-bitmap.c: ensure pack validity for all reuse packs

Teng Long (1):
l10n: zh_CN: updated translation for 2.48

Tobias Boesch (1):
git gui: add directly calling merge tool from configuration

Tobias Pietzsch (1):
gitk: check main window visibility before waiting for it to show

Toon Claes (2):
bundle-uri: plug leak in unbundle_from_file()
bundle: remove unneeded code

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

Vũ Tiến Hưng (1):
l10n: vi: Updated translation for 2.48

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

Yi-Jyun Pan (2):

      l10n: zh_TW: Git 2.48
      l10n: zh_TW: Git 2.48 round 2

Yuri Konotopov (1):
git-gui: use system encoding to show console output

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