Release of the distributed source code management system Git is one of the most popular, reliable, and high-performance version control systems, providing flexible means of nonlinear development based on branching and merging. Implicit hashing of the entire previous history in every commit ensures the integrity of history and resilience to changes made 'in retrospect.' It is also possible to validate with digital signatures from developers for individual tags and commits.
Compared to the previous release, this new version includes 537 changes made with the participation of 71 developers, of which 19 participated for the first time. Key points :
- The implementation of default inclusion from the previous release has been canceled of the Git communication protocol, which is used when connecting a client to the Git server remotely. The protocol is currently considered not ready for default use due to the identification of slippery issues requiring separate review.
- A set of options for configuring SSL connections when accessing through a proxy has been added.
- Expanded information is now provided when using the cleaning and smudging filters. For example, the object , which appears in the convertible blob, is now shown.
- To avoid confusion, the 'git describe' command now always uses an extended output mode ('--long') if a replaced tag associated with a commit is detected (previously, a signed or annotated tag describing the commit was output even if it had been renamed or moved within the 'refs/tags/' hierarchy, and the 'git show tag^0' command did not work as expected — 'refs/tags/tag' was not found or even yielded a different tag).
- When executing 'git pull', a warning is now issued if the configuration variable pull.rebase is not explicitly set and the options '--[no-]rebase' or '--ff-only' are not applied. To suppress the warning for those who do not intend to perform a rebase operation, the variable can be set to 'false'.
- A review of the 'git pull' options shared with 'git fetch' has been conducted. Previously unmentioned similar options have been documented, and the implementation of the missed options in 'git fetch' has been provided.
- An option '--no-gpg-sign' has been added to the 'git rebase' command to override the 'commit.gpgSign' setting.
- In 'git format-patch', the ability to display 'From:' and 'Subject:' headers without alteration of characters not found in ASCII encoding has been added.
- In 'git log', an option '--show-pulls' has been added to view not only commits where changes were made but also the commit for merging those changes from a separate branch.
- Unified handling of interactive input across all components has been implemented, and fflush() is called after displaying the input prompt but before the read operation.
- In 'git rebase', it is allowed to reapply all local commits without first performing a 'checkout', even if some of them have previously been pushed to upstream.
- The value of the configuration variable 'pack.useSparse' has been changed to 'true' to enable optimizations that were previously presented as experimental by default.
- An '—autostash' option has been added to 'git merge'.
- The 'sparse-checkout' interface has been improved.
- Several new actions have been added to 'git update-ref —stdin',
allowing direct control over link update transactions, for example, to implement two-phase atomic updates of links across multiple repositories. - Userdiff patterns for Markdown documents have been added.
- The limitation on excluding all paths in sparse-checkout patterns that lead to an empty working tree has been removed.
- The 'git restore —staged —worktree' operation now defaults to using content from the 'HEAD' branch instead of outputting an error.
- Work continues on migrating to the SHA-2 hashing algorithm instead of SHA-1.
- The code for interaction with GnuPG has been redesigned.
Source: opennet.ru
