Opened 3 years ago

Closed 3 years ago

#14152 closed enhancement (fixed)

git-2.29.0

Reported by: Bruce Dubbs Owned by: blfs-book
Priority: normal Milestone: 10.1
Component: BOOK Version: SVN
Severity: normal Keywords:
Cc:

Description

New minor version.

Change History (2)

comment:1 by Bruce Dubbs, 3 years ago

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.

  • "git worktree" gained a "repair" subcommand to help users recover after moving the worktrees or repository manually without telling Git. Also, "git init --separate-git-dir" no longer corrupts administrative data related to linked worktrees.
  • The "--format=" option to the "for-each-ref" command and friends learned a few more tricks, e.g. the ":short" suffix that applies to "objectname" now also can be used for "parent", "tree", etc.
  • "git worktree add" learns that the "-d" is a synonym to "--detach" option to create a new worktree without being on a branch.
  • "format-patch --range-diff=<prev> <origin>..HEAD" has been taught not to ignore <origin> when <prev> is a single version.
  • "add -p" now allows editing paths that were only added in intent.
  • The 'meld' backend of the "git mergetool" learned to give the underlying 'meld' the '--auto-merge' option, which would help reduce the amount of text that requires manual merging.
  • "git for-each-ref" and friends that list refs used to allow only one --merged or --no-merged to filter them; they learned to take combination of both kind of filtering.
  • "git maintenance", a "git gc"'s big brother, has been introduced to take care of more repository maintenance tasks, not limited to the object database cleaning.
  • "git receive-pack" that accepts requests by "git push" learned to outsource most of the ref updates to the new "proc-receive" hook.
  • "git push" that wants to be atomic and wants to send push certificate learned not to prepare and sign the push certificate when it fails the local check (hence due to atomicity it is known that no certificate is needed).
  • "git commit-graph write" learned to limit the number of bloom filters that are computed from scratch with the --max-new-filters option.
  • The transport protocol v2 has become the default again.
  • The installation procedure learned to optionally omit "git-foo" executable files for each 'foo' built-in subcommand, which are only required by old timers that still rely on the age old promise that prepending "git --exec-path" output to PATH early in their script will keep the "git-foo" calls they wrote working.
  • The command line completion (in contrib/) learned that "git restore -s <TAB>" is often followed by a refname.
  • "git shortlog" has been taught to group commits by the contents of the trailer lines, like "Reviewed-by:", "Coauthored-by:", etc.
  • "git archive" learns the "--add-file" option to include untracked files into a snapshot from a tree-ish.
  • "git fetch" and "git push" support negative refspecs.
  • "git format-patch" learns to take "whenAble" as a possible value for the format.useAutoBase configuration variable to become no-op when the automatically computed base does not make sense.
  • Credential helpers are now allowed to terminate lines with CRLF line ending, as well as LF line ending.

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 interoperability 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..
  • An unused binary has been discarded, and and a bunch of commands have been turned into into built-in.
  • 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.
  • When a packfile is removed by "git repack", multi-pack-index gets cleared; the code was taught to do so less aggressively by first checking if the midx actually refers to a pack that no longer exists.
  • Internal API clean-up to handle two options "diff-index" and "log" have, which happen to share the same short form, more sensibly.
  • The "add -i/-p" machinery has been written in C but it is not used by default yet. It is made default to those who are participating in feature.experimental experiment.
  • Allow maintainers to tweak $(TAR) invocations done while making distribution tarballs.
  • "git index-pack" learned to resolve deltified objects with greater parallelism.
  • "diff-highlight" (in contrib/) had a logic to flush its output upon seeing a blank line but the way it detected a blank line was broken.
  • The logic to skip testing on the tagged commit and the tag itself was not quite consistent which led to failure of Windows test tasks. It has been revamped to consistently skip revisions that have already been tested, based on the tree object of the revision.

comment:2 by Bruce Dubbs, 3 years ago

Resolution: fixed
Status: newclosed

Fixed at revision 23827.

Note: See TracTickets for help on using tickets.