Release of the Git source control system version 2.45

After two months of development, the release of version 2.45 of the distributed version control system Git has been published. Git is one of the most popular, reliable, and high-performance version control systems, providing flexible means for nonlinear development based on branching and merging. To ensure the integrity of history and resilience against 'backdated' changes, implicit hashing of the entire previous history is used in each commit, and it is also possible to authenticate individual tags and commits with developers' digital signatures. Git code is distributed under the GPLv2+ license.

Compared to the previous release, 540 changes have been made in the new version, prepared with the participation of 96 developers, of which 35 participated in the development for the first time. Key innovations include:

  • Preliminary support for the 'reftable' backend has been added for efficient storage of branch and tag references in the repository. The new backend uses a block storage system implemented by the JGit project, optimized for storing a very large number of references (traditional storage formats for references incur significant overhead in repositories with a large number of references due to placing a very large number of files in one directory when storing references in the $GIT_DIR/refs directory, or the need to rewrite one large file on every update when storing references in the $GIT_DIR/packed_refs file). The new backend is enabled by specifying the '--ref-format=reftable' option when initializing the repository ('git init --ref-format=reftable /path/to/repo'), allowing for faster searching, reading, and writing in repositories with a large number of references.
  • Tools have been provided to ensure portability between object identifiers based on SHA-1 and SHA-256 hashes. To work with both SHA-1 and SHA-256 hashes in one repository during the gradual migration to SHA-256 hashes, a new 'compatibility' object format has been proposed, allowing referencing objects not only by the primary hash specified when initializing the repository but also by a backup hash. For example, when initializing a repository, you can choose the SHA-256 format and specify SHA-1 as a backup hash: git init --object-format=sha256 /path/to/repo cd /path/to/repo git config extensions.compatObjectFormat sha1
  • The command "git rev-list" has been enhanced to display object identifiers that are missing in the local repository, even if they are unreachable in a branch or tag, which can be used for diagnosing repository corruption: git rev-list --missing=print --all | grep '^?' ?70678e7afeacdcba1242793c3d3d28916a2fd152
  • A new command "git reflog list" has been added to show known reflogs along with their corresponding tags and branch references.
  • The ability to define alternative prefixes for the output of "git diff" has been introduced, which are displayed before the file path and indicate the state before and after a certain version of the file (default prefixes are "a/" and "b/"). New parameters diff.srcPrefix and diff.dstPrefix have been added to the configuration for specifying custom prefixes.
  • A core.commentString parameter has been added to define a delimiter string that will be used instead of the '#' symbol to ignore comments in commit messages. The previously available setting core.commentChar has been adapted to support multibyte characters as comment delimiters (previously only ASCII characters were supported).
  • An option "--comment" has been added to the command "git config" to allow comments to be saved in the .gitconfig file to clarify the essence of various settings. git config --comment 'to show the merge base' merge.conflictStyle diff3 tail -n 2 .git/config [merge] conflictStyle = diff3 # to show the merge base
  • An option "--empty" has been added to the command "git cherry-pick" for automatically dropping redundant commits, similar to the "--empty" option in git-rebase and git-am.
  • In the command "git checkout -p", using the symbol "@" has been allowed as a synonym for the name "HEAD".

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster