173 lines
7.7 KiB
Plaintext
173 lines
7.7 KiB
Plaintext
Git v2.98 Release Notes
|
|
=======================
|
|
|
|
This is meant to be the antepenultimate release to prepare for the
|
|
long anticipated Git 3.0 which has been vaporware for so long.
|
|
|
|
|
|
UI, Workflows & Features
|
|
------------------------
|
|
|
|
* The experimental 'git history' command has been taught a new 'squash'
|
|
subcommand to fold a range of commits into a single commit, with any
|
|
descendants replayed on top.
|
|
|
|
* A new hook 'report' is added to 'git receive-pack', which runs after
|
|
reference updates and allows the server to filter or modify the
|
|
packet-line status report sent back to the client.
|
|
|
|
* The terminology regarding reference storage formats has been unified
|
|
across command-line options, environment variables, configuration
|
|
variables, and source code, standardizing on the phrase "ref storage
|
|
format" (e.g., `--ref-storage-format`, `'GIT_REF_STORAGE_FORMAT'`).
|
|
Additionally, the `--ref-storage-format` option has been updated to
|
|
accept payloads in the form `<format>://<payload>`.
|
|
|
|
* The build-time knob 'USE_NSEC' for nanosecond stat precision has been
|
|
converted to a runtime configuration 'core.useNanosec', allowing
|
|
distributions to bundle one binary that adapts to filesystem
|
|
capabilities dynamically.
|
|
|
|
* The command-line completion script (in 'contrib/') has been taught
|
|
to complete the 'repair' subcommand for 'git worktree'.
|
|
|
|
* Various documentation files have been updated to use explicit
|
|
'<<TARGET,TARGET>>' AsciiDoc cross-references instead of plain text
|
|
references. This improves rendering on the web and avoids broken
|
|
links when manual pages are included into other pages.
|
|
|
|
|
|
Performance, Internal Implementation, Development Support etc.
|
|
--------------------------------------------------------------
|
|
|
|
* The setup of alternates has been deferred to object database
|
|
creation time during clone, which drops the unused ad-hoc alternate
|
|
writing API, simplifying the object database backend interface.
|
|
|
|
* Updates to Coccinelle semantic patches to correctly handle the
|
|
'FREE_AND_NULL()' macro and avoid generating broken transformations
|
|
for negated pointer checks.
|
|
|
|
* The 'Makefile' has been taught to precompile 'git-compat-util.h' to
|
|
speed up overall compilation, while excluding sources that do not
|
|
include the compatibility header.
|
|
|
|
* The can_all_from_reach() and can_all_from_reach_with_flag()
|
|
functions have been updated to accept a repository context,
|
|
preventing bugs where submodule merging incorrectly reads from the
|
|
superproject's commit-graph.
|
|
|
|
* The error reporting machinery in the WinANSI compatibility layer has
|
|
been simplified to pass the exact Windows error code and correctly
|
|
format arguments for fatal errors.
|
|
|
|
* The Debian 12 CI job has been updated to skip a half-auth clone test
|
|
that occasionally fails due to a bug in the packaged curl version
|
|
handling early HTTP/2 responses.
|
|
|
|
* The CI script has been updated to check for one-indexed slice numbers
|
|
when deciding to run unit tests on Windows, mirroring the behaviour in
|
|
the modern GitHub and GitLab workflows.
|
|
|
|
* The Windows GitLab CI job has been updated to provision and use the
|
|
GCC-targeting Rust toolchain for MinGW builds, fixing job failures
|
|
caused by incomplete Rust setup and missing linker support.
|
|
(merge 1e5f522ef1 js/gitlab-ci-windows-rust later to maint).
|
|
|
|
* The external merge driver in 'git merge' now uses the tempfile API
|
|
to create its temporary files. This ensures that these temporaries
|
|
are reliably cleaned up even when the merge driver or its parent Git
|
|
process is terminated abruptly.
|
|
|
|
* The performance test for `git fetch` pack-dir rescans has been
|
|
updated to use the `--no-deref` option when cleaning up
|
|
remote-tracking branches. This prevents `git update-ref` from
|
|
failing with a multiple updates error when both a symref and its
|
|
target are deleted in the same transaction.
|
|
|
|
|
|
|
|
Fixes since v2.56
|
|
-----------------
|
|
|
|
* Updates to Coccinelle semantic patches to correctly handle the
|
|
'FREE_AND_NULL()' macro and avoid generating broken transformations
|
|
for negated pointer checks.
|
|
(merge 32814b69d0 jc/cocci-free-updates later to maint).
|
|
|
|
* The files backend has been updated to avoid unconditionally locking
|
|
the 'packed-refs' file when deleting a root ref (which are never
|
|
packed).
|
|
(merge d8e4585822 ak/refs-files-root-ref-lock later to maint).
|
|
|
|
* The server-side protocol v2 response order for 'wanted-refs' and
|
|
'shallow-info' has been swapped to match the client's expectation,
|
|
fixing a fetch failure when the server has 'uploadpack.allowRefInWant'
|
|
enabled and the client performs a shallow fetch.
|
|
(merge 191740edaa rr/upload-pack-swap-shallow-wanted-ref later to maint).
|
|
|
|
* Assorted fixes for code paths that are not careful with boundary and
|
|
error conditions.
|
|
(merge c88341b7e1 js/coverity-fixes later to maint).
|
|
|
|
* A bug in git diff --no-index that mishandled reverse (-R) output
|
|
when conflicts existed between a file and a directory has been
|
|
fixed.
|
|
(merge 9a13b3742b hd/diff-no-index-reverse-fix later to maint).
|
|
|
|
* 'git pull' has been taught to fail more gracefully instead of
|
|
segfaulting when lookup_commit_reference() fails on unparseable
|
|
objects.
|
|
(merge 38bdda17dd jk/pull-null-merge-head later to maint).
|
|
|
|
* The sequencer machinery (used by 'git rebase', 'git cherry-pick', and
|
|
'git revert') has been updated to defer automatic maintenance tasks
|
|
until the end of the operation, preventing nested 'git commit', 'git
|
|
merge', and 'exec' commands from triggering GC operations that could
|
|
contend for locks or delete open packs while the sequence is in
|
|
progress.
|
|
(merge eba1a1c5dd tb/rerere-lock-grace later to maint).
|
|
|
|
* When 'core.fsyncMethod' is set to 'batch', the ODB transaction
|
|
failed to properly flush large blob packfiles residing in the
|
|
temporary directory before migrating the directory's contents to the
|
|
main object store. The execution sequence has been corrected by
|
|
performing the packfile flush before the temporary directory
|
|
migration, averting failure.
|
|
(merge ef7faa6350 jt/object-file-batch-fsync-fix later to maint).
|
|
|
|
* The default expiry periods for both reachable and unreachable reflog
|
|
entries have been corrected from a past regression that swapped
|
|
them.
|
|
(merge 60cf500551 ps/reflog-expiry-fix later to maint).
|
|
|
|
* The directory traversal logic has been updated to correctly evaluate
|
|
pathspecs for ignored directories containing nested repositories,
|
|
and has been fortified to gracefully handle null pathspecs during
|
|
checkout operations.
|
|
(merge ebc067f3cc rs/dir-skip-nested-repo-fix later to maint).
|
|
|
|
* The command-line parsing of revision options has been updated to
|
|
properly distinguish between malformed and unknown options, and to
|
|
correctly report the name of unknown options after they have been
|
|
moved during the option parsing process.
|
|
(merge da2926c8f5 jk/parse-revision-opt-fixes later to maint).
|
|
|
|
* The documentation for 'git-name-rev' has been updated to refer to
|
|
object IDs instead of SHA-1, to more accurately reflect that the
|
|
active hash algorithm is used.
|
|
(merge b2ab8fccc3 jk/name-rev-update-hash-descriptions later to maint).
|
|
|
|
* The HTTP transport has been updated to handle changes in recent curl
|
|
versions that strip credentials from the effective URL, preventing
|
|
unnecessary credential prompts during redirects.
|
|
(merge 76524c2604 jk/http-curl-strip-creds later to maint).
|
|
|
|
* The timestamp used for checking the reflog of a remote-tracking
|
|
branch during 'git push --force-if-includes' was left uninitialized
|
|
when the reflog was completely empty, which has been corrected.
|
|
(merge c84ed3a0ab as/push-force-if-includes-no-reflog later to maint).
|
|
|
|
* Other code cleanup, docfix, build fix, etc.
|
|
(merge e638de60bc kz/doc-add-rm-typofix later to maint).
|