Git 2.37 has already been released and these are its news

The launch of the new version of Git 2.37 which is one of the most popular version control systems, reliable, and high-performance software that provides flexible nonlinear development tools based on forks and mergers of forks.

To ensure history integrity and resistance to changes, the "backward" implicit hash of all previous history is used on each commit, it is also possible to verify the digital signatures of individual tag and commit developers.

Git 2.37 Key New Features

Compared to the previous version, 395 changes were accepted in the new version, prepared with the participation of 75 developers, of which 20 participated in the development for the first time.

In this new version it is highlighted that the partial indices mechanism (sparse index), which covers only part of the repository, se has been prepared for widespread use. Partial indexes can improve performance and save space in repositories that perform partial clone operations (sparse checkout) or operate on an incomplete copy of the repository.

The new version completes the work of integration of partial indexes in commands "git show", "git sparse-checkout", and "git stash". The most noticeable performance gain from using partial indexes is in the "git stash" command, which is up to 80% faster in some situations.

Another change that stands out is that a new “cruft packs” mechanism has been implemented to package unreachable objects that are not referenced in the repository (not referenced by branches or tags). The garbage collector deletes unreachable objects, but they remain in the repository for a certain time before deleting them to avoid race conditions. To track the period of unreachable objects, binding is required, they are tagged with the change time of similar objects, which does not allow them to be stored in a bundle file, in which all objects have a common modification time.

Saving each previously used object in a separate file, the file caused problems in the presence of a large number of new unreachable objects, not yet. The proposed "cruft packs" mechanism allows all unreachable objects to be stored in a bundle file, and data about the modification time of each object is reflected in a separate table stored in a file with the extension ".mtimes".

For Windows and macOS, there is a built-in mechanism to keep track of changes to the file system, which eliminates the need to list the entire working directory when performing operations like "git status". Previously, to track changes via hooks, you could connect external file system change tracking utilities, such as Watchman, but this required the installation of additional programs and configurations. This functionality is now built in and can be enabled with "git config core.fsmonitor true".

The command "git sparse-checkout" has dropped support for an alternative to "--cone" mode template definition for partial cloning, which allows, when defining the part of the repository subject to the cloning operation, to list individual files using the ".gitignore" syntax, which does not allow use for optimizing partial indexes.

Of the other changes that stand out:

  • Improved flexibility in configuring the fsync() call to flush changes to disk.
  • Added support for the "batch" sync strategy to the "core.fsyncMethod" parameter, which speeds up work when writing a large number of separate files by accumulating changes in the rewrite cache flushed by a single fsync() call.
  • Traversal commands like “git log” and “git rev-list” now have the “–since-as-filter=X” option to filter information about commits older than “X”.
  • In the "git remote" command, specifying the "-v" flag provides information about partial clones of the repository.
  • Added "transfer.credentialsInUrl" setting, which can take the values ​​"warn", "die" and "allow". If the parameter “remote. .url" specifies credentials in plain text, an attempt to perform "get" or "push" operations will fail if the "transfer.credentialsInUrl" setting is set to "die", or a warning if set to "warn" .
  • By default, the new interactive mode implementation of the "git add -i" command, rewritten from Perl to C, is used.

Finally if you are interested in knowing more about it, you can check the details In 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.