Release of the Git version control system 2.46.

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

Compared to the previous release, the new version contains 746 changes, prepared with the participation of 96 developers, of which 31 are participating for the first time. Key innovations:

  • Experimental support for a new type of bitmap has been added — the 'pseudo-merge reachability bitmap', in which, unlike the structure of the 'reachability bitmap', data about sets of objects related to commits is stored not tied to each individual commit, but to several commits at once. This organization allows using one bitmap when determining objects for commits in different branches, which in large repositories makes it possible to avoid creating a large number of individual bitmaps and significantly speeds up the traversal of objects to determine which objects need to be sent to the client during operations such as 'git fetch', 'git rev-list', and 'git clone'. To enable the new type of bitmap and define the logic for their selection and use, a series of settings 'bitmapPseudoMerge' are proposed: git config bitmapPseudoMerge.all.pattern 'refs/(heads|tags)/' git config bitmapPseudoMerge.all.threshold now git config bitmapPseudoMerge.all.stableThreshold never git repack -adb
  • A new command line interface has been implemented for the 'git config' command, which replaces the scattered options for viewing, renaming, and deleting settings and sections, such as '—get', '—get-all', '—unset', and '—remove-section', with a set of individual subcommands. For example, the command 'git config list' can now be used to display all settings of a repository, and to view the content of a specific parameter, the command 'git config get ' can be used. Additional results can be filtered using the '—regexp' option that allows specifying a filter based on a regular expression.
  • The 'credential helper' protocol, used for transmitting credentials when accessing repositories with restricted access, has been updated to support new fields 'authtype' and 'credential', enabling the creation of handlers for HTTP authentication systems that go beyond just username and password checks, such as when using Bearer Token in OAuth 2.0. Previously, to work with such authentication systems, sensitive information had to be specified in plain text within the http.extraHeader parameter. Additionally, the protocol now includes the ability to maintain the state of each credential handler to support multi-step authentication methods used in protocols like NTLM and Kerberos.
  • The development of the experimental 'reftable' backend has continued for efficient storage of references to branches and tags in the repository. This backend uses a block storage system utilized by the JGit project and is optimized to store a very large number of references (traditional reference storage formats lead to significant overhead in repositories with numerous references due to the placement of many files in one directory when storing references in the $GIT_DIR/refs directory, or the need to rewrite a single large file upon every update when storing references in the $GIT_DIR/packed_refs file). The new version adds the command 'git refs migrate —ref-format=reftable' to convert existing repositories to the 'reftable' backend (previously, this backend could only be enabled upon repository initialization).
  • The git team has added the option "--no-advice", which turns off all messages with recommendations and hints, potentially useful for preventing the log from being cluttered with unnecessary information during automated git calls.
  • The process of translating some checks from the test suite to use unit tests has begun, which will simplify the testing of low-level components and improve the testing process's efficiency on the Windows platform, where there are high overheads when running a large number of processes during the execution of tests implemented as shell scripts.
  • The color settings parsing code has been updated to support the "#RGB" format in addition to the "#RRGGBB" format.

Source: opennet.ru

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