Git 2.46 arrives with improvements, fixes and new type of bitmaps

go to 2.46

The new version of Git 2.46 arrives after three months of development and in this new release several improvements and significant new features have been incorporated such as experimental support for a new type of bitmaps, improvements to the experimental “reftable” backend, new command line interface for the “git config” command, among other things.

This new version of Git 2.46 includes bug fixes from over 96 contributors, 31 of them new and as such, the new version contains 746 changes.

Main new features in Git 2.46

The experimental support for “pseudofusion accessibility bitmap” is one of the most important developments of this release, and this new type of bitmap sand different from the traditional structure "accessibility bitmap" by storing data about sets of commit-related objects not for each individual commit, but for several commits at once.

As such, this pseudomerge accessibility bitmap allows using a single bitmap to define objects in commits of different branches, resulting in a significant performance improvement, especially on large repositories. This speeds up operations like git fetch, git rev-list, and git clone by reducing the need to generate multiple separate bitmaps.

Go to 2.46 also introduces several important improvements to its command line interface and in the management of credentials and data storage. The command line interface for the git config command has been redesigned, replacing disparate options like –get, –get-all, –unset, and –remove-section with a set of more intuitive subcommands. For example, to display all repository configurations, you can now use the command “git configlist«, and to view the content of a specific parameter, you can now use the command «git config get ». To filter the results further, you can use the “–regexp” option to specify a filter based on a regular expression.

In addition to this, in the protocol «credential helper" added support for new "authtype" and "credential" fields, allowing you to create handlers for HTTP authentication systems that do more than just verify the username and password, for example, when using Bearer Token in OAuth 2.0. And previously, To work with such authentication systems, it was necessary to specify confidential data in clear text in the http.extraHeader parameter. Besides, protocol adds the ability to persist the state of each controller of credentials to support multi-factor authentication methods used in protocols such as NTLM and Kerberos.

Moreover, the development of the experimental “reftable” backend has been improved for efficient storage of links to branches and tags in the repository. The new version adds the “git refs migrate –ref-format=reftable” command to migrate existing repositories to the “reftable” backend (previously, the backend was only enabled when the repository was initialized).

As well, In Git 2.46 the process to convert some tests from the test suite has started, to the use of unit tests. This is intended to simplify testing of low-level components and will increase the efficiency of the testing process on the Windows platform, which generates large overhead costs when running a number of processes on a large platform during execution of tests implemented in a of shell scripts.

Of the other changes that stand out of this new version:

  • Added “–no-advice” option to the git command, which disables all advice and hint messages, which can be useful to prevent the log from being clogged with unnecessary information during an automated git call.
  • Added the ability to use the “#RGB” representation in addition to the “#RRGGBB” representation in code to parse color settings.
  • When git merge sees that the index cannot be updated (for example, due to
    to another process that does the same thing in the background)
  • A CPP macro USE_THE_REPOSITORY_VARIABLE is introduced to help transition the codebase to be less dependent on the availability of the the_repository singleton instance.
  • “git version –build-options” reports the version information of
  • OpenSSL and other libraries (if used) in the build.
  • Fixed memory leaks in "git mv"
  • Updated command line completion support for zsh (in contrib/)
    to stop exposing internal state to end-user shell interaction

Finally if you are interested in knowing more about it, you can check the details in the following link