Link [ pkgsrc | NetBSD | pkgsrc git mirror | PR fulltext-search | netbsd commit viewer ]


   
        usage: [branch:branch] [user:user] [path[@revision]] keyword [... [-excludekeyword [...]]] (e.g. branch:MAIN pkgtools/pkg)




switch to index mode

recent branches: MAIN (1h)  pkgsrc-2024Q1 (6d)  pkgsrc-2023Q4 (53d)  pkgsrc-2023Q2 (85d)  pkgsrc-2023Q3 (165d) 

2024-05-23 20:24:37 UTC Now

2020-06-03 14:06:48 UTC MAIN commitmail json YAML

git: updated to 2.27.0

Git 2.27 Release Notes
======================

Updates since v2.26
-------------------

Backward compatibility notes

* When "git describe C" finds that commit C is pointed by a signed or
  annotated tag, which records T as its tagname in the object, the
  command gives T as its answer.  Even if the user renames or moves
  such a tag from its natural location in the "refs/tags/" hierarchy,
  "git describe C" would still give T as the answer, but in such a
  case "git show T^0" would no longer work as expected.  There may be
  nothing at "refs/tags/T" or even worse there may be a different tag
  instead.

  Starting from this version, "git describe" will always use the
  "long" version, as if the "--long" option were given, when giving
  its output based on such a misplaced tag to work around the problem.

* "git pull" issues a warning message until the pull.rebase
  configuration variable is explicitly given, which some existing
  users may find annoying---those who prefer not to rebase need to
  set the variable to false to squelch the warning.

* The transport protocol version 2, which was promoted to the default
  in Git 2.26 release, turned out to have some remaining rough edges,
  so it has been demoted from the default.

UI, Workflows & Features

* A handful of options to configure SSL when talking to proxies have
  been added.

* Smudge/clean conversion filters are now given more information
  (e.g. the object of the tree-ish in which the blob being converted
  appears, in addition to its path, which has already been given).

* When "git describe C" finds an annotated tag with tagname A to be
  the best name to explain commit C, and the tag is stored in a
  "wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the
  command gave a warning message but used A (not B) to describe C.
  If C is exactly at the tag, the describe output would be "A", but
  "git rev-parse A^0" would not be equal as "git rev-parse C^0".  The
  behavior of the command has been changed to use the "long" form
  i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.

* "git pull" learned to warn when no pull.rebase configuration
  exists, and neither --[no-]rebase nor --ff-only is given (which
  would result a merge).

* "git p4" learned four new hooks and also "--no-verify" option to
  bypass them (and the existing "p4-pre-submit" hook).

* "git pull" shares many options with underlying "git fetch", but
  some of them were not documented and some of those that would make
  sense to pass down were not passed down.

* "git rebase" learned the "--no-gpg-sign" option to countermand
  commit.gpgSign the user may have.

* The output from "git format-patch" uses RFC 2047 encoding for
  non-ASCII letters on From: and Subject: headers, so that it can
  directly be fed to e-mail programs.  A new option has been added
  to produce these headers in raw.

* "git log" learned "--show-pulls" that helps pathspec limited
  history views; a merge commit that takes the whole change from a
  side branch, which is normally omitted from the output, is shown
  in addition to the commits that introduce real changes.

* The interactive input from various codepaths are consolidated and
  any prompt possibly issued earlier are fflush()ed before we read.

* Allow "git rebase" to reapply all local commits, even if the may be
  already in the upstream, without checking first.

* The 'pack.useSparse' configuration variable now defaults to 'true',
  enabling an optimization that has been experimental since Git 2.21.

* "git rebase" happens to call some hooks meant for "checkout" and
  "commit" by this was not a designed behaviour than historical
  accident.  This has been documented.

* "git merge" learns the "--autostash" option.

* "sparse-checkout" UI improvements.

* "git update-ref --stdin" learned a handful of new verbs to let the
  user control ref update transactions more explicitly, which helps
  as an ingredient to implement two-phase commit-style atomic
  ref-updates across multiple repositories.

* "git commit-graph write" learned different ways to write out split
  files.

* Introduce an extension to the commit-graph to make it efficient to
  check for the paths that were modified at each commit using Bloom
  filters.

* The approxidate parser learns to parse seconds with fraction and
  ignore fractional part.

* The userdiff patterns for Markdown documents have been added.

* The sparse-checkout patterns have been forbidden from excluding all
  paths, leaving an empty working tree, for a long time.  This
  limitation has been lifted.

* "git restore --staged --worktree" now defaults to take the contents
  out of "HEAD", instead of erring out.

* "git p4" learned to recover from a (broken) state where a directory
  and a file are recorded at the same path in the Perforce repository
  the same way as their clients do.

* "git multi-pack-index repack" has been taught to honor some
  repack.* configuration variables.

Performance, Internal Implementation, Development Support etc.

* The advise API has been revamped to allow more systematic enumeration of
  advice knobs in the future.

* SHA-256 transition continues.

* The code to interface with GnuPG has been refactored.

* "git stash" has kept an escape hatch to use the scripted version
  for a few releases, which got stale.  It has been removed.

* Enable tests that require GnuPG on Windows.

* Minor test usability improvement.

* Trace2 enhancement to allow logging of the environment variables.

* Test clean-up continues.

* Perf-test update.

* A Windows-specific test element has been made more robust against
  misuse from both user's environment and programmer's errors.

* Various tests have been updated to work around issues found with
  shell utilities that come with busybox etc.

* The config API made mixed uses of int and size_t types to represent
  length of various pieces of text it parsed, which has been updated
  to use the correct type (i.e. size_t) throughout.

* The "--decorate-refs" and "--decorate-refs-exclude" options "git
  log" takes have learned a companion configuration variable
  log.excludeDecoration that sits at the lowest priority in the
  family.

* A new CI job to build and run test suite on linux with musl libc
  has been added.

* Update the CI configuration to use GitHub Actions, retiring the one
  based on Azure Pipelines.

* The directory traversal code had redundant recursive calls which
  made its performance characteristics exponential with respect to
  the depth of the tree, which was corrected.

* "git blame" learns to take advantage of the "changed-paths" Bloom
  filter stored in the commit-graph file.

* The "bugreport" tool has been added.

* The object walk with object filter "--filter=tree:0" can now take
  advantage of the pack bitmap when available.

* Instead of always building all branches at GitHub via Actions,
  users can specify which branches to build.

* Codepaths that show progress meter have been taught to also use the
  start_progress() and the stop_progress() calls as a "region" to be
  traced.

* Instead of downloading Windows SDK for CI jobs for windows builds
  from an external site (wingit.blob.core.windows.net), use the one
  created in the windows-build job, to work around quota issues at
  the external site.

(adam)