Opened 13 months ago

Closed 13 months ago

Last modified 11 months ago

#18121 closed enhancement (fixed)

git-2.41.0

Reported by: Douglas R. Reno Owned by: Tim Tassonis
Priority: normal Milestone: 12.0
Component: BOOK Version: git
Severity: normal Keywords:
Cc:

Description

New minor version

Change History (4)

comment:1 by Tim Tassonis, 13 months ago

Owner: changed from blfs-book to Tim Tassonis
Status: newassigned

UI, Workflows & Features

  • Allow information carried on the WWW-Authenticate header to be passed to the credential helpers.
  • A new "fetch.hideRefs" option can be used to exclude specified refs from "rev-list --objects --stdin --not --all" traversal for checking object connectivity, most useful when there are many unrelated histories in a single repository.
  • "git push" has been taught to allow deletion of refs with one-level names to help repairing a repository who acquired such a ref by mistake. In general, we don't encourage use of such a ref, and creation or update to such a ref is rejected as before.
  • Allow "git bisect reset" to check out the original branch when the branch is already checked out in a different worktree linked to the same repository.
  • A few subcommands have been taught to stop users from working on a branch that is being used in another worktree linked to the same repository.
  • "git format-patch" learned to write a log-message only output file for empty commits.
  • "git format-patch" honors the src/dst prefixes set to nonstandard values with configuration variables like "diff.noprefix", causing receiving end of the patch that expects the standard -p1 format to break. "format-patch" has been taught to ignore end-user configuration and always use the standard prefixes.

This is a backward compatibility breaking change.

  • Lift the limitation that colored prompts can only be used with PROMPT_COMMAND mode.
  • "git blame --contents=<file> <rev> -- <path>" used to be forbidden, but now it finds the origins of lines starting at <file> contents through the history that leads to <rev>.
  • "git pack-redundant" gave a warning when run, as the command has outlived its usefulness long ago and is nominated for future removal. Now we escalate to give an error.
  • "git clone" from an empty repository learned to propagate the choice of the hash algorithm from the source repository to the newly created repository over any one of the v0/v1/v2 protocol.
  • "git mergetool" and "git difftool" learns a new configuration guiDefault to optionally favor configured guitool over non-gui-tool automatically when $DISPLAY is set.
  • "git branch -d origin/master" would say "no such branch", but it is likely a missed "-r" if refs/remotes/origin/master exists. The command has been taught to give such a hint in its error message.
  • Clean-up of the code path that deals with merge strategy option handling in "git rebase".
  • "git clone --local" stops copying from an original repository that has symbolic links inside its $GIT_DIR; an error message when that happens has been updated.
  • The "--format=..." option of "git for-each-ref", "git branch", and "git tag" commands learn "--omit-empty" to hide refs whose formatting results in an empty string from the output.
  • The sendemail-validate validate hook learned to pass the total number of input files and where in the sequence each invocation is via environment variables.
  • When "gc" needs to retain unreachable objects, packing them into cruft packs (instead of exploding them into loose object files) has been offered as a more efficient option for some time. Now the use of cruft packs has been made the default and no longer considered an experimental feature.
  • The output given by "git blame" that attributes a line to contents taken from the file specified by the "--contents" option shows it differently from a line attributed to the working tree file.
  • "git send-email" learned to give the e-mail headers to the validate hook by passing an extra argument from the command line.
  • The credential subsystem learns to help OAuth framework.
  • The titles of manual pages used to be chomped at an unreasonably short limit, which has been removed.
  • Error messages given when working on an unborn branch that is checked out in another worktree have been improved.
  • The documentation was misleading about the interaction between GIT_DEFAULT_HASH and "git clone", which has been clarified to stress that the variable is to be ignored by the command.
  • "git send-email" learned "--header-cmd=<cmd>" that can inject arbitrary e-mail header lines to the outgoing messages.
  • "git fsck" learned to detect bit-flip breakages in the reachability bitmap files.
  • The "--stdin" option of "git name-rev" has been replaced with the "--annotate-stdin" option more than a year ago. We stop advertising it in the "git name-rev -h" output.
  • "git push --all" gained an alias "git push --branches".
  • "git fetch" learned the "--porcelain" option that emits what it did in a machine-parseable format.
  • "git --attr-source=<tree> cmd $args" is a new way to have any command to read attributes not from the working tree but from the given tree object.

Performance, Internal Implementation, Development Support etc.

  • Code clean-up to clarify directory traversal API.
  • Code clean-up to clarify the rule that "git-compat-util.h" must be the first to be included.
  • More work towards -Wunused.
  • Instead of forcing each command to choose to honor GPG related configuration variables, make the subsystem lazily initialize itself.
  • Remove workaround for ancient versions of DocBook to make it work correctly with groff, which has not been necessary since docbook 1.76 from 2010.
  • Code clean-up to include and/or uninclude parse-options.h file as needed.
  • The code path that reports what "git fetch" did to each ref has been cleaned up.
  • Assorted config API updates.
  • A few configuration variables to tell the cURL library that different types of ssl-cert and ssl-key are in use have been added.
  • Split key function and data structure definitions out of cache.h to new header files and adjust the users.
  • "git fetch --all" does not have to download and handle the same bundleURI over and over, which has been corrected.
  • "git sparse-checkout" command learns a debugging aid for the sparse rule definitions.
  • "git write-tree" learns to work better with sparse-index.
  • The on-disk reverse index that allows mapping from the pack offset to the object name for the object stored at the offset has been enabled by default.
  • "git fsck" learned to validate the on-disk pack reverse index files.
  • strtok() and strtok_r() are banned in this codebase.
  • The detect-compilers script to help auto-tweaking the build system had trouble working with compilers whose version number has extra suffixes. The script has been taught that certain suffixes (like "-win32" in "gcc 10-win32") can be safely stripped as they share the same features and bugs with the version without the suffix.
  • ctype tests have been taught to test EOF, too.
  • The implementation of credential helpers used fgets() over fixed size buffers to read protocol messages, causing the remainder of the folded long line to trigger unexpected behaviour, which has been corrected.
  • The implementation of the default "negotiator", used to find common ancestor over the network for object tranfer, used to be recursive; it was updated to be iterative to conserve stackspace usage.
  • Our custom callout formatter is no longer used in the documentation formatting toolchain, as the upstream default ones give better output these days.
  • The tracing mechanism learned to notice and report when auto-discovered bare repositories are being used, as allowing so without explicitly stating the user intends to do so (with setting GIT_DIR for example) can be used with social engineering as an attack vector.
  • "git diff-files" learned not to expand sparse-index unless needed.

comment:2 by Tim Tassonis, 13 months ago

Last edited 13 months ago by Tim Tassonis (previous) (diff)

comment:3 by Tim Tassonis, 13 months ago

Resolution: fixed
Status: assignedclosed

Fixed in commit 97bd764c30

comment:4 by Bruce Dubbs, 11 months ago

Milestone: 11.412.0

Milestone renamed

Note: See TracTickets for help on using tickets.