Release of Git source control system 2.48

The release of the distributed version control system Git 2.48 has been published. Git is known for its high performance and provides tools for nonlinear development based on branching and merging. To ensure the integrity of history and resilience to 'backdating' changes, implicit hashing of the entire previous history in each commit is used, along with authentication through digital signatures from developers for individual tags and commits. The Git code is distributed under the GPLv2+ license.

Compared to the previous release, the new version includes 605 changes prepared by 93 developers, of whom 35 are contributing for the first time. Key innovations include:

  • The ability to build using the Meson build system has been implemented, in addition to GNU Make and CMake. To build Git, the command 'meson setup build && ninja -C build' can now be used. It is noted that the Makefile used with GNU Make has grown to 3,887 lines and is not as simple as desired. The Meson toolkit simplifies working with the build system, is convenient for cross-platform builds, and makes building more accessible for beginners or developers without experience using the Make utility. Support for Make and CMake is not planned to be discontinued in the foreseeable future.
  • Build options have been added to allow the use of alternative SHA-1 hash implementations when computing checksums used to verify the integrity of data blocks in pack files. The performance of checksum calculations is significant; for example, about 78% of processor time is spent on their calculation when cloning a repository with the Linux kernel. The default implementation includes additional collision checks and protection against SHA-1 attacks, such as SHAttered and Shambles. Such protection, which consumes additional resources, makes sense only when using SHA-1 for cryptographic purposes and is useless when verifying the integrity of index data.

    A series of *_UNSAFE options, such as 'OPENSSL_SHA1_UNSAFE', is proposed for building Git with a faster SHA-1 implementation unsuitable for cryptosystems. In GitHub, building with a simplified SHA-1 has allowed for a 10-13% increase in the performance of data fetching and cloning operations.

  • The command 'range-diff' has been enhanced with the option '--remerge-diff', which allows showing differences between the common merge result and the actual data reflected in the commit after executing the merge command. When using the '--remerge-diff' option, the differences between conflict resolutions are not separated for each parent branch but are shown as common differences between the file with merge conflicts and the file where conflicts are resolved. In the context of the 'range-diff' command, this new option may be useful for comparing sets of commits after moving the sequence of commits using the 'rebase' command with the '--rebase-merges' option.
  • The ability to run a Git test suite with memory leak detection mode has been added. Since Git provides utilities that terminate after executing the called function, memory leaks were not previously considered a significant issue. The necessity to completely eliminate memory leaks has become relevant after the work began on externalizing internal functionality into a separate library that can be applied in long-running processes.
  • The formation of a list of deprecated modes and features, the support for which is planned to be discontinued in the future, has begun. The removal of deprecated functionality is expected to occur in the Git 3.0 release, which will include changes that break backward compatibility.
  • Continued optimization of the 'git for-each-ref' command, which outputs a list of references in the repository. The optimization, which combines handlers for filtering references and formatting output, is now applied not only for unsorted output but also when the '--sort' option is specified.
  • The backend implementation of "reftable" has been enhanced with block storage for efficient storage in the repository of references to branches and tags. Reftable significantly speeds up search, read, and write operations in repositories with a very large number of references. In the new version, calls to certain auxiliary APIs have been eliminated to further exclude the libgit library from the build dependencies. Adaptive error handling has been implemented for memory allocation functions (memory shortages no longer lead to crashes). Link creation operations have been accelerated and memory consumption reduced.
  • Issues that caused looping and repository corruption after executing the "git gc" command have been resolved in the partial cloning implementation.
  • When executing the command "git fetch " in the absence of "refs/remotes//HEAD" on the local system, and if there is a branch on the other side that HEAD refers to, "refs/remotes//HEAD" is now redirected to this branch. To manage the synchronization of "refs/remotes//HEAD" with the HEAD value on the other side of the connection, a setting "remote..followRemoteHEAD" has been added.
  • The setting "remote..serverOption" has been added, similar to the command line option "--serverOption=".
  • In the command "git rebase --rebase-merges", the use of branch names as labels has been ensured wherever possible.
  • The ‘-e’ flag has been added to the ‘git notes add’ and ‘git notes append’ commands, which opens the note in an external text editor specified by the GIT_EDITOR environment variable.
  • Compatibility with GCC 15 and the C23 standard has been improved.
  • Support for older versions of libcURL and Perl has been discontinued.

Source: opennet.ru

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