Git 2.31 is now available and arrives with git maintenance

Few days ago the release of the new version of Git 2.3 was announced, one of the most popular, reliable and high-performance version control systems, providing flexible non-linear development tools based on branching and merging.

Compared to the previous version, 679 changes were adopted in the new version, prepared with the participation of 85 developers, of which 23 participated in the development for the first time.

Git 2.31 Key New Features

In this new version of Git 2.31 the addition of the "git maintenance" command is highlighted which allows periodic work on systems that do not support cron. For example, with the new command, you can arrange to periodically start the repository packaging process so that you do not have to wait for the repository lock to complete when packaging is done automatically when multiple commands are run.

Another change that stands out is that added support to keep a reverse index on disk (revindex) for package files, since Git stores all data in the form of objects, which are stored in separate files. To improve the efficiency of working with the repository, the objects are additionally placed in package files, in which the information is presented in the form of a stream of objects that are followed one after another.

For each package-file, an index file (.idx) is created, allowing the object identifier to be used to very quickly determine the offset in the package-file in which this object is stored. The inverse index (.rev) proposed in Git 2.31 aims to streamline the process of determining an object identifier from information about the location of the object in a package file.

Previously, such conversion was done on the fly during analysis from a package file and it was stored only in memory, which did not allow the reuse of said indexes and forced to generate the index each time. The operation of constructing an index is reduced to construct an array of object position pairs and sort it by position, which can be time consuming for large package files.

On the other hand, we can find that performance optimizations added based on appearance in the file format of the confirmation chart, which is used to optimize access to information about confirmations, new data on the generation number of confirmations, which can be used to speed up additional operations with confirmations.

In addition, added ability to override default branch name in new repositories (init.defaultBranch configuration). When accessing external repositories, git tries to check the branch that HEAD points to, that is, if the external server is using the "main" branch by default, then the "git clone" operation will try to find "main" locally.

Of the other changes that stand out:

  • The "–disk-use" option added to the "git rev-list" command to display a summary of the size of the objects.
  • Support for the deprecated regular expression library PCRE1 has been removed.
  • Provided the ability to forcefully prohibit the use of shortcuts, acting independently of the hashing algorithm. The prohibition is enabled by assigning the value "no" to the core.abbrev parameter.
  • The "–path-format" option has been added to the "git rev-parse" command to explicitly define the output of relative or absolute paths.
  • Bash's autocomplete scripts make it easy to add completion rules for custom "git" subcommands.
  • Added "–stdin" option to "git bundle" command to read links from standard input stream.
  • The "–left-only" and "–right-only" options have been added to the "git range-diff" command to show only one side of the compared range.
  • Added option "–skip-to = »To the« git difftool »command to resume an interrupted session from an arbitrary path.
  • The Code of Conduct (Code of Conduct), which defines the basic principles for resolving conflicts between developers, has been updated to version 2.0 (previously version 1.4 was used).

Finally if you want to know more about it, you can consult the following link.


Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: Miguel Ángel Gatón
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.