[ANNOUNCE] Git v2.46.1

From: Junio C Hamano
Date: Sat Sep 14 2024 - 12:53:03 EST


The latest maintenance release Git v2.46.1 is now available at the
usual places. Unlike maintenance releases in the recent past, this
one is _not_ about security fixes, but primarily about fixes to
various commands that can work outside a repository barfing due to
lack of initialization of the hash function. IOW, it is not the end
of the world if you did not update to this version for a few weeks,
or wait for 2.47 ;-).

The tarballs are found at:

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

The following public repositories all have a copy of the 'v2.46.1'
tag and the 'maint' 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

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

Git 2.46.1 Release Notes
========================

This release is primarily to merge fixes accumulated on the 'master'
front to prepare for 2.47 release that are still relevant to 2.46.x
maintenance track.

Fixes since Git 2.46
--------------------

* "git checkout --ours" (no other arguments) complained that the
option is incompatible with branch switching, which is technically
correct, but found confusing by some users. It now says that the
user needs to give pathspec to specify what paths to checkout.

* It has been documented that we avoid "VAR=VAL shell_func" and why.

* "git add -p" by users with diff.suppressBlankEmpty set to true
failed to parse the patch that represents an unmodified empty line
with an empty line (not a line with a single space on it), which
has been corrected.

* "git rebase --help" referred to "offset" (the difference between
the location a change was taken from and the change gets replaced)
incorrectly and called it "fuzz", which has been corrected.

* "git notes add -m '' --allow-empty" and friends that take prepared
data to create notes should not invoke an editor, but it started
doing so since Git 2.42, which has been corrected.

* An expensive operation to prepare tracing was done in re-encoding
code path even when the tracing was not requested, which has been
corrected.

* Perforce tests have been updated.

* The credential helper to talk to OSX keychain sometimes sent
garbage bytes after the username, which has been corrected.

* A recent update broke "git ls-remote" used outside a repository,
which has been corrected.

* "git config --value=foo --fixed-value section.key newvalue" barfed
when the existing value in the configuration file used the
valueless true syntax, which has been corrected.

* "git reflog expire" failed to honor annotated tags when computing
reachable commits.

* A flakey test and incorrect calls to strtoX() functions have been
fixed.

* Follow-up on 2.45.1 regression fix.

* "git rev-list ... | git diff-tree -p --remerge-diff --stdin" should
behave more or less like "git log -p --remerge-diff" but instead it
crashed, forgetting to prepare a temporary object store needed.

* The patch parser in "git patch-id" has been tightened to avoid
getting confused by lines that look like a patch header in the log
message.

* "git bundle unbundle" outside a repository triggered a BUG()
unnecessarily, which has been corrected.

* The code forgot to discard unnecessary in-core commit buffer data
for commits that "git log --skip=<number>" traversed but omitted
from the output, which has been corrected.

* "git verify-pack" and "git index-pack" started dying outside a
repository, which has been corrected.

* A corner case bug in "git stash" was fixed.

Also contains minor documentation updates and code clean-ups.

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

Changes since v2.46.0 are as follows:

Celeste Liu (1):
doc: replace 3 dash with correct 2 dash in git-config(1)

D Harithamma (1):
convert: return early when not tracing

David Disseldorp (1):
notes: do not trigger editor when adding an empty note

Jayson Rhynas (1):
doc: fix hex code escapes in git-ls-files

Jeff King (4):
credential/osxkeychain: respect NUL terminator in username
apply: canonicalize modes read from patches
t4129: fix racy index when calling chmod after git-add
revision: free commit buffers for skipped commits

Johannes Schindelin (2):
ci: bump microsoft/setup-msbuild from v1 to v2
ci(win+VS): download the vcpkg artifacts using a dedicated GitHub Action

Junio C Hamano (30):
checkout: special case error messages during noop switching
doc: note that AT&T ksh does not work with our test suite
Revert "reflog expire: don't use lookup_commit_reference_gently()"
howto-maintain: cover a whole development cycle
howto-maintain: update daily tasks
CodingGuidelines: document a shell that "fails" "VAR=VAL shell_func"
doc: difference in location to apply is "offset", not "fuzz"
mailmap: plug memory leak in read_mailmap_blob()
csum-file: introduce discard_hashfile()
t4204: patch-id supports various input format
patch-id: call flush_current_id() only when needed
patch-id: make get_one_patchid() more extensible
patch-id: rewrite code that detects the beginning of a patch
patch-id: tighten code to detect the patch header
safe.directory: preliminary clean-up
safe.directory: normalize the checked path
safe.directory: normalize the configured path
safe.directory: setting safe.directory="." allows the "current" directory
t0018: remove leftover debugging cruft
tests: drop use of 'tee' that hides exit status
tutorial: grammofix
doc: grammofix in git-diff-tree
howto-maintain: mention preformatted docs
Prepare for 2.46.1
CodingGuidelines: spaces around C operators
A bit more topics for 2.46.x maintenance track
git-config.1: --get-all description update
git-config.1: fix description of --regexp in synopsis
Another batch of topics for 2.46.1
Git 2.46.1

Justin Tobler (1):
doc: clarify post-receive hook behavior

Kousik Sanagavarapu (1):
unit-tests/test-lib: fix typo in check_pointer_eq() description

Kyle Lippincott (2):
set errno=0 before strtoX calls
t6421: fix test to work when repo dir contains d0

Patrick Steinhardt (8):
t98xx: fix Perforce tests with p4d r23 and newer
ci: update Perforce version to r23.2
t98xx: mark Perforce tests as memory-leak free
builtin/ls-remote: fall back to SHA1 outside of a repo
builtin/bundle: have unbundle check for repo before opening its bundle
bundle: default to SHA1 when reading bundle headers
builtin/stash: fix `--keep-index --include-untracked` with empty HEAD
builtin/index-pack: fix segfaults when running outside of a repo

Phillip Wood (2):
add-patch: handle splitting hunks with diff.suppressBlankEmpty
add-patch: use normalize_marker() when recounting edited hunk

Ramsay Jones (1):
compat/terminal: mark parameter of git_terminal_prompt() UNUSED

René Scharfe (2):
t-example-decorate: remove test messages
log-tree: use decimal_width()

Sven Strickroth (1):
refs/files: prevent memory leak by freeing packed_ref_store

Taylor Blau (1):
config.c: avoid segfault with --fixed-value and valueless config

Tomas Nordin (1):
doc: remove dangling closing parenthesis

Xing Xin (1):
diff-tree: fix crash when used with --remerge-diff

ahmed akef (1):
docs: explain the order of output in the batched mode of git-cat-file(1)