Git 2.25.0 distributed source code management system is available. Git is one of the most popular, reliable and high-performance version control systems that provides flexible non-linear development tools based on branch branching and merging. To ensure the integrity of the story and resistance to changes “retroactively”, an implicit hashing of the entire previous history in each commit is used, it is also possible to digitally sign the developers of individual tags and commits.

Compared to the previous release, the new version adopted 583 changes prepared with the participation of 84 developers, of which 32 took part in the development for the first time.

These are some of the updates and changes:

  • The possibility of partial cloning is approaching stabilization and full readiness, allowing you to transfer only part of the data and work with an incomplete copy of the repository. In normal cloning, all data is copied from the repository, including each version of each file in the change history. For very large repositories, copying data leads to a significant increase in traffic and disk space, even if the developer is only interested in a subset of files. To simplify obtaining only part of the working source tree, the new release offers the experimental sparse-checkout command and the new option –sparse for the clone command.
  • Previously, the selective cloning process was carried out by setting filters to filter out excess content and the “–no-checkout” option to disable the completion of missing files. After that, before performing the checkout operation, it was necessary to enable the core.sparseCheckout setting and define a list of excluded path templates in the .git / info / sparse-checkout file.
  • The possibility of partial cloning is approaching stabilization and full readiness, allowing you to transfer only part of the data and work with an incomplete copy of the repository. In normal cloning, all data is copied from the repository, including each version of each file from the change history. The sparse-checkout command allows you to set the list of paths for checkout (set) without manually configuring .git / info / sparse-checkout, as well as display the current list of paths (list) and enable or disable partial checkout (enable / disable).
  • To optimize work with very large repositories and template lists, the “git config core.sparseCheckoutCone” setting is proposed, which restricts valid templates (instead of arbitrary .gitignore templates, you can specify all paths and whether all files in a given subdirectory should be extracted). For example, if the large repository has the “A / B / C” directory and all the work is concentrated in the “C” subdirectory, then when sparseCheckoutCone mode is enabled, the git sparse-checkout set A / B / C command will completely extract the contents of “C”, but from “A” and “B” it will extract only the parts necessary for working with “C”.
  • From the documentation (“git rebase -h”), all references to the “–preserve-merges” option, which is deprecated, have been removed and instead, “git rebase –rebase-merges” should be used to transfer the set of commits.
  • To improve the readability of messages with patches sent to mailing lists, the option “git format-patch –cover-from-description subject” has been added, when specifying which as the subject of the cover letter for the patch set, the first paragraph from the description text of the branch is used.
  • Implemented support for the joint use of the “git apply –3way” command and the “merge.conflictStyle” setting (“git apply” now takes into account the conflict description style from merge.conflictStyle if it is necessary to resolve the conflict after trying to apply the file with the patch to the repository).
  • The function definition code used in operations such as “git diff / grep –show-function / – function-context” is expanded with support for defining function boundaries in Elixir programs.
  • In “git add”, “git commit”, “git reset” and other commands, a new option is added – –pathspec-from-file “, which makes it possible to load a list of paths from a file or input stream, instead of listing them on the command line.
  • The problem with defining renames at the directory level when writing commits has been resolved. The definition did not work if the contents of the subdirectory were moved to the root of the repository.
  • An initial implementation of the redesigned git add -i command, which allows you to add modified content interactively, has been proposed, rewritten from Perl to C. A similar revision of the git add -p command is underway.
  • The “git log –graph” command was refactored, forming an ASCII image of the graph with the history of changes in the repository. Processing allowed us to significantly improve and simplify the output without distorting the structure of the story, which, for example, solved the problem of getting the picture outside the line width of the terminal.
  • The option “git log –format = ..”, which allows changing the output format, is expanded with support for the “l / L” flags to display only the part of the email address indicated before the “@” symbol (for example, useful when all developers have all emails in one domain).
  • Added the set-url subcommand to the git submodule command.
  • Test suites have been updated in preparation for the transition to the SHA-2 hash algorithm instead of SHA-1. For very large repositories, copying data leads to a significant increase in traffic and disk space, even if the developer is only interested in a subset of files. To simplify obtaining only part of the working source tree, the new release offers the experimental sparse-checkout command and the new option –sparse for the clone command.
  • Previously, the selective cloning process was carried out by setting filters to filter out excess content and the “–no-checkout” option to disable the completion of missing files. After that, before performing the checkout operation, it was necessary to enable the core.sparseCheckout setting and define a list of excluded path templates in the .git / info / sparse-checkout file.

 Get more at the official blog and the release notes.





Source link

Register at Binance