e197136389
Signed-off-by: Junio C Hamano <gitster@pobox.com>
288 lines
12 KiB
Plaintext
288 lines
12 KiB
Plaintext
Git 2.29 Release Notes
|
|
======================
|
|
|
|
Updates since v2.28
|
|
-------------------
|
|
|
|
UI, Workflows & Features
|
|
|
|
* "git help log" has been enhanced by sharing more material from the
|
|
documentation for the underlying "git rev-list" command.
|
|
|
|
* "git for-each-ref --format=<>" learned %(contents:size).
|
|
|
|
* "git merge" learned to selectively omit " into <branch>" at the end
|
|
of the title of default merge message with merge.suppressDest
|
|
configuration.
|
|
|
|
* The component to respond to "git fetch" request is made more
|
|
configurable to selectively allow or reject object filtering
|
|
specification used for partial cloning.
|
|
|
|
* Stop when "sendmail.*" configuration variables are defined, which
|
|
could be a mistaken attempt to define "sendemail.*" variables.
|
|
|
|
* The existing backends for "git mergetool" based on variants of vim
|
|
have been refactored and then support for "nvim" has been added.
|
|
|
|
* "git bisect" learns the "--first-parent" option to find the first
|
|
breakage along the first-parent chain.
|
|
|
|
* "git log --first-parent -p" showed patches only for single-parent
|
|
commits on the first-parent chain; the "--first-parent" option has
|
|
been made to imply "-m". Use "--no-diff-merges" to restore the
|
|
previous behaviour to omit patches for merge commits.
|
|
|
|
* The commit labels used to explain each side of conflicted hunks
|
|
placed by the sequencer machinery have been made more readable by
|
|
humans.
|
|
|
|
* The "--batch-size" option of "git multi-pack-index repack" command
|
|
is now used to specify that very small packfiles are collected into
|
|
one until the total size roughly exceeds it.
|
|
|
|
* The recent addition of SHA-256 support is marked as experimental in
|
|
the documentation.
|
|
|
|
* "git fetch" learned --no-write-fetch-head option to avoid writing
|
|
the FETCH_HEAD file.
|
|
|
|
* Command line completion (in contrib/) usually omits redundant,
|
|
deprecated and/or dangerous options from its output; it learned to
|
|
optionally include all of them.
|
|
|
|
* The output from the "diff" family of the commands had abbreviated
|
|
object names of blobs involved in the patch, but its length was not
|
|
affected by the --abbrev option. Now it is.
|
|
|
|
|
|
Performance, Internal Implementation, Development Support etc.
|
|
|
|
* The changed-path Bloom filter is improved using ideas from an
|
|
independent implementation.
|
|
|
|
* Updates to the changed-paths bloom filter.
|
|
|
|
* The test framework has been updated so that most tests will run
|
|
with predictable (artificial) timestamps.
|
|
|
|
* Preliminary clean-up of the refs API in preparation for adding a
|
|
new refs backend "reftable".
|
|
|
|
* Dev support to limit the use of test_must_fail to only git commands.
|
|
|
|
* While packing many objects in a repository with a promissor remote,
|
|
lazily fetching missing objects from the promissor remote one by
|
|
one may be inefficient---the code now attempts to fetch all the
|
|
missing objects in batch (obviously this won't work for a lazy
|
|
clone that lazily fetches tree objects as you cannot even enumerate
|
|
what blobs are missing until you learn which trees are missing).
|
|
|
|
* The pretend-object mechanism checks if the given object already
|
|
exists in the object store before deciding to keep the data
|
|
in-core, but the check would have triggered lazy fetching of such
|
|
an object from a promissor remote.
|
|
|
|
* The argv_array API is useful for not just managing argv but any
|
|
"vector" (NULL-terminated array) of strings, and has seen adoption
|
|
to a certain degree. It has been renamed to "strvec" to reduce the
|
|
barrier to adoption.
|
|
|
|
* The final leg of SHA-256 transition plus doc updates. Note that
|
|
there is no inter-operability between SHA-1 and SHA-256
|
|
repositories yet.
|
|
|
|
* CMake support to build with MSVC for Windows bypassing the Makefile.
|
|
|
|
* A new helper function has_object() has been introduced to make it
|
|
easier to mark object existence checks that do and don't want to
|
|
trigger lazy fetches, and a few such checks are converted using it.
|
|
|
|
* A no-op replacement function implemented as a C preprocessor macro
|
|
does not perform as good a job as one implemented as a "static
|
|
inline" function in catching errors in parameters; replace the
|
|
former with the latter in <git-compat-util.h> header.
|
|
|
|
* Test framework update.
|
|
(merge d572f52a64 es/test-cmp-typocatcher later to maint).
|
|
|
|
* Updates to "git merge" tests, in preparation for a new merge
|
|
strategy backend.
|
|
|
|
* midx and commit-graph files now use the byte defined in their file
|
|
format specification for identifying the hash function used for
|
|
object names.
|
|
|
|
* The FETCH_HEAD is now always read from the filesystem regardless of
|
|
the ref backend in use, as its format is much richer than the
|
|
normal refs, and written directly by "git fetch" as a plain file..
|
|
|
|
* A handful of places in in-tree code still relied on being able to
|
|
execute the git subcommands, especially built-ins, in "git-foo"
|
|
form, which have been corrected.
|
|
|
|
|
|
Fixes since v2.28
|
|
-----------------
|
|
|
|
* "git clone --separate-git-dir=$elsewhere" used to stomp on the
|
|
contents of the existing directory $elsewhere, which has been
|
|
taught to fail when $elsewhere is not an empty directory.
|
|
(merge dfaa209a79 bw/fail-cloning-into-non-empty later to maint).
|
|
|
|
* With the base fix to 2.27 regresion, any new extensions in a v0
|
|
repository would still be silently honored, which is not quite
|
|
right. Instead, complain and die loudly.
|
|
(merge ec91ffca04 jk/reject-newer-extensions-in-v0 later to maint).
|
|
|
|
* Fetching from a lazily cloned repository resulted at the server
|
|
side in attempts to lazy fetch objects that the client side has,
|
|
many of which will not be available from the third-party anyway.
|
|
(merge 77aa0941ce jt/avoid-lazy-fetching-upon-have-check later to maint).
|
|
|
|
* Fix to an ancient bug caused by an over-eager attempt for
|
|
optimization.
|
|
(merge a98f7fb366 rs/add-index-entry-optim-fix later to maint).
|
|
|
|
* Pushing a ref whose name contains non-ASCII character with the
|
|
"--force-with-lease" option did not work over smart HTTP protocol,
|
|
which has been corrected.
|
|
(merge cd85b447bf bc/push-cas-cquoted-refname later to maint).
|
|
|
|
* "git mv src dst", when src is an unmerged path, errored out
|
|
correctly but with an incorrect error message to claim that src is
|
|
not tracked, which has been clarified.
|
|
(merge 9b906af657 ct/mv-unmerged-path-error later to maint).
|
|
|
|
* Fix to a regression introduced during 2.27 cycle.
|
|
(merge cada7308ad en/fill-directory-exponential later to maint).
|
|
|
|
* Command line completion (in contrib/) update.
|
|
(merge 688b87c81b mp/complete-show-color-moved later to maint).
|
|
|
|
* All "mergy" operations that internally use the merge-recursive
|
|
machinery should honor the merge.renormalize configuration, but
|
|
many of them didn't.
|
|
|
|
* Doc cleanup around "worktree".
|
|
(merge dc9c144be5 es/worktree-doc-cleanups later to maint).
|
|
|
|
* The "git blame --first-parent" option was not documented, but now
|
|
it is.
|
|
(merge 11bc12ae1e rp/blame-first-parent-doc later to maint).
|
|
|
|
* The logic to find the ref transaction hook script attempted to
|
|
cache the path to the found hook without realizing that it needed
|
|
to keep a copied value, as the API it used returned a transitory
|
|
buffer space. This has been corrected.
|
|
(merge 09b2aa30c9 ps/ref-transaction-hook later to maint).
|
|
|
|
* Recent versions of "git diff-files" shows a diff between the index
|
|
and the working tree for "intent-to-add" paths as a "new file"
|
|
patch; "git apply --cached" should be able to take "git diff-files"
|
|
and should act as an equivalent to "git add" for the path, but the
|
|
command failed to do so for such a path.
|
|
(merge 4c025c667e rp/apply-cached-with-i-t-a later to maint).
|
|
|
|
* "git diff [<tree-ish>] $path" for a $path that is marked with i-t-a
|
|
bit was not showing the mode bits from the working tree.
|
|
(merge cb0dd22b82 rp/ita-diff-modefix later to maint).
|
|
|
|
* Ring buffer with size 4 used for bin-hex translation resulted in a
|
|
wrong object name in the sequencer's todo output, which has been
|
|
corrected.
|
|
(merge 5da69c0dac ak/sequencer-fix-find-uniq-abbrev later to maint).
|
|
|
|
* When given more than one target line ranges, "git blame -La,b
|
|
-Lc,d" was over-eager to coalesce groups of original lines and
|
|
showed incorrect results, which has been corrected.
|
|
(merge c2ebaa27d6 jk/blame-coalesce-fix later to maint).
|
|
|
|
* The regexp to identify the function boundary for FORTRAN programs
|
|
has been updated.
|
|
(merge 75c3b6b2e8 pb/userdiff-fortran-update later to maint).
|
|
|
|
* A few end-user facing messages have been updated to be
|
|
hash-algorithm agnostic.
|
|
(merge 4279000d3e jc/object-names-are-not-sha-1 later to maint).
|
|
|
|
* "unlink" emulation on MinGW has been optimized.
|
|
(merge 680e0b4524 jh/mingw-unlink later to maint).
|
|
|
|
* The purpose of "git init --separate-git-dir" is to initialize a
|
|
new project with the repository separate from the working tree,
|
|
or, in the case of an existing project, to move the repository
|
|
(the .git/ directory) out of the working tree. It does not make
|
|
sense to use --separate-git-dir with a bare repository for which
|
|
there is no working tree, so disallow its use with bare
|
|
repositories.
|
|
(merge ccf236a23a es/init-no-separate-git-dir-in-bare later to maint).
|
|
|
|
* "ls-files -o" mishandled the top-level directory of another git
|
|
working tree that hangs in the current git working tree.
|
|
(merge ab282aa548 en/dir-nonbare-embedded later to maint).
|
|
|
|
* Fix some incorrect UNLEAK() annotations.
|
|
(merge 3e19816dc0 jk/unleak-fixes later to maint).
|
|
|
|
* Use more buffered I/O where we used to call many small write(2)s.
|
|
(merge a698d67b08 rs/more-buffered-io later to maint).
|
|
|
|
* The patch-id computation did not ignore the "incomplete last line"
|
|
marker like whitespaces.
|
|
(merge 82a62015a7 rs/patch-id-with-incomplete-line later to maint).
|
|
|
|
* Updates into a lazy/partial clone with a submodule did not work
|
|
well with transfer.fsckobjects set.
|
|
|
|
* The parser for "git for-each-ref --format=..." was too loose when
|
|
parsing the "%(trailers...)" atom, and forgot that "trailers" and
|
|
"trailers:<modifiers>" are the only two allowed forms, which has
|
|
been corrected.
|
|
(merge 2c22e102f8 hv/ref-filter-trailers-atom-parsing-fix later to maint).
|
|
|
|
* Long ago, we decided to use 3 threads by default when running the
|
|
index-pack task in parallel, which has been adjusted a bit upwards.
|
|
(merge fbff95b67f jk/index-pack-w-more-threads later to maint).
|
|
|
|
* "git restore/checkout --no-overlay" with wildcarded pathspec
|
|
mistakenly removed matching paths in subdirectories, which has been
|
|
corrected.
|
|
(merge bfda204ade rs/checkout-no-overlay-pathspec-fix later to maint).
|
|
|
|
* The description of --cached/--index options in "git apply --help"
|
|
has been updated.
|
|
(merge d064702be3 rp/apply-cached-doc later to maint).
|
|
|
|
* Feeding "$ZERO_OID" to "git log --ignore-missing --stdin", and
|
|
running "git log --ignore-missing $ZERO_OID" fell back to start
|
|
digging from HEAD; it has been corrected to become a no-op, like
|
|
"git log --tags=no-tag-matches-this-pattern" does.
|
|
(merge 04a0e98515 jk/rev-input-given-fix later to maint).
|
|
|
|
* Various callers of run_command API has been modernized.
|
|
(merge afbdba391e jc/run-command-use-embedded-args later to maint).
|
|
|
|
* Other code cleanup, docfix, build fix, etc.
|
|
(merge 84544f2ea3 sk/typofixes later to maint).
|
|
(merge b17f411ab5 ar/help-guides-doc later to maint).
|
|
(merge 98c6871fad rs/grep-simpler-parse-object-or-die-call later to maint).
|
|
(merge 861c4ce141 en/typofixes later to maint).
|
|
(merge 60e47f6773 sg/ci-git-path-fix-with-pyenv later to maint).
|
|
(merge e2bfa50ac3 jb/doc-packfile-name later to maint).
|
|
(merge 918d8ff780 es/worktree-cleanup later to maint).
|
|
(merge dc156bc31f ma/t1450-quotefix later to maint).
|
|
(merge 56e743426b en/merge-recursive-comment-fixes later to maint).
|
|
(merge 7d23ff818f rs/bisect-oid-to-hex-fix later to maint).
|
|
(merge de20baf2c9 ny/notes-doc-sample-update later to maint).
|
|
(merge f649aaaf82 so/rev-parser-errormessage-fix later to maint).
|
|
(merge 6103d58b7f bc/sha-256-cvs-svn-updates later to maint).
|
|
(merge ac900fddb7 ma/stop-progress-null-fix later to maint).
|
|
(merge e767963ab6 rs/upload-pack-sigchain-fix later to maint).
|
|
(merge a831908599 rs/preserve-merges-unused-code-removal later to maint).
|
|
(merge 6dfefe70a9 jb/commit-graph-doc-fix later to maint).
|
|
(merge 847b37271e pb/set-url-docfix later to maint).
|
|
(merge 748f733d54 mt/checkout-entry-dead-code-removal later to maint).
|
|
(merge ce820cbd58 dl/subtree-docs later to maint).
|
|
(merge 55fe225dde jk/leakfix later to maint).
|