Release of the distributed source control system Git 2.27

Available release of the distributed source control system Go to 2.27.0. Git is one of the most popular, reliable, and high-performance version control systems that provides flexible non-linear development tools based on branching and merging branches. To ensure the integrity of the history and resistance to retroactive changes, implicit hashing of the entire previous history in each commit is used, it is also possible to verify individual tags and commits with digital signatures from the developers.

Compared to the previous release, the new version included 537 changes, prepared with the participation of 71 developers, of which 19 took part in development for the first time. Basic innovations:

  • The default enablement implemented in the previous release has been reverted the second version Git communication protocol, which is used when a client remotely connects to a Git server. The protocol is considered not yet ready for use by default due to the identification of slippery issues that require separate consideration.
  • Added a set of options for setting up an SSL connection when accessing through a proxy.
  • Expanded information displayed when using transform filters "clean" and "smudge". For example, now the object is shown tree-ish, in which the blob to be converted appears.
  • To avoid confusion, the "git describe" command now always uses extended output mode ("--long") if a replaced tag associated with a commit is identified (previously, a signed or annotated tag describing a commit was output even if it was renamed or moved in the hierarchy β€œrefs/tags/”, and the β€œgit show tag^0” command did not work as expected - β€œrefs/tags/tag” was not found or even a different tag was returned).
  • When executing "git pull", a warning is now issued unless the pull.rebase configuration variable is explicitly set and the "--[no-]rebase" or "--ff-only" options are not used. To suppress the warning for those who do not intend to perform a rebase operation, the variable can be set to false.
  • The β€œgit pull” options common to β€œgit fetch” have been reviewed. Previously unmentioned similar options are documented and missing options are passed to git fetch.
  • Added "--no-gpg-sign" option to the "git rebase" command to override the "commit.gpgSign" setting.
  • Added the ability to "git format-patch" to display the "From:" and "Subject:" headers unchanged, without converting non-ASCII characters.
  • The "-show-pulls" option has been added to "git log", which allows you to view not only the commits in which changes were made, but also the commit to merge these changes from a separate branch.
  • Unified interactive input handling across all components and added a call to fflush() after the input prompt is shown but before the read operation.
  • "git rebase" allows you to reapply all local commits without first performing a "checkout" operation, even if some of them were previously upstreamed.
  • Changed 'pack.useSparse' config variable to 'true' to enable default optimizations previously reported as experimental.
  • Added "--autostash" option to "git merge".
  • Improved "sparse-checkout" interface.
  • Several new actions have been added to "git update-ref --stdin",
    allowing direct control of link update transactions, for example, to implement a two-stage atomic link update across multiple repositories.

  • Added userdiff templates for Markdown documents.
  • Removed the restriction to exclude all paths in sparse-checkout templates that result in an empty working tree.
  • The "git restore --staged --worktree" operation now uses the content from the "HEAD" branch by default instead of an error.
  • Work continued on switching to the SHA-2 hashing algorithm instead of SHA-1.
  • The code for interacting with GnuPG has been reworked.

Source: opennet.ru

Add a comment