Release of the distributed source control system Git 2.26

Available Release of the distributed source code management system Git 2.26.0Git is one of the most popular, reliable, and high-performance version control systems, providing flexible means of nonlinear development based on branching and merging. Implicit hashing of the entire previous history in every commit ensures the integrity of history and resilience to changes made 'in retrospect.' It is also possible to validate with digital signatures from developers for individual tags and commits.

Compared to the previous release, this version includes 504 changes made by 64 contributors, of whom 12 participated for the first time. Key innovations:

  • The default transition has been made to the second version of the Git communication protocol, used for remote client connection to the Git server. The second version of the protocol is notable for providing the ability to filter branches and tags on the server side, returning a shortened list of references to the client. Previously, when executing any fetch command, the complete list of references in the entire repository was always sent to the client, even when the client was updating only one branch or checking the validity of its repository copy. Another significant innovation is the ability to add new features to the protocol as new functionality appears in the tooling. The client code remains compatible with the old protocol and can continue to work with both new and old servers, automatically reverting to the first version if the server does not support the second.
  • A new option "--show-scope" has been added to the 'git config' command, simplifying the identification of the context in which certain settings are defined. Git allows defining settings in various places: in the repository (.git/info/config), in the user's directory (~/.gitconfig), in the system-wide configuration file (/etc/gitconfig), as well as through command line options and environment variables. When using 'git config', it can be quite difficult to determine exactly where the desired setting is defined. Previously, the "--show-origin" option was available, but it only shows the path to the file where the setting is defined, which is useful if you intend to edit the file, but doesn't help when you need to change the value via 'git config' using the options "--system", "--global" or "--local". The new "--show-scope" option displays the context of variable definitions and can be used in conjunction with --show-origin:

    $ git --list --show-scope --show-origin
    global file:/home/user/.gitconfig diff.interhunkcontext=1
    global file:/home/user/.gitconfig push.default=current
    […]
    local file:.git/config branch.master.remote=origin
    local file:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    global diff.statgraphwidth 35
    local diff.colormoved plain

    $ git config --global --unset diff.statgraphwidth

  • In binding settings credentials mask usage in URLs is allowed. Any HTTP settings and credentials in Git can be set for all connections (http.extraHeader, credential.helper) as well as for connections bound to a URL (credential.https://example.com.helper, credential.https://example.com.helper). Until now, the use of masks like *.example.com was only permitted for HTTP settings but was not supported for binding credentials. In Git 2.26, these differences have been eliminated, and for binding a username to all subdomains, you can now specify:

    [credential "https://*.example.com"]

    username = ttaylorr

  • The experimental support for partial cloning has been further expanded, allowing only part of the data to be transferred and working with an incomplete copy of the repository. The new release includes a new command `git sparse-checkout add`, which allows you to add individual directories for the `checkout` operation to only part of the working tree, instead of listing all such directories at once using the command `git sparse-checkout set` (you can add one directory at a time without needing to re-specify the entire list each time).
    For example, to clone the repository git/git without transferring blobs, limiting the check to only the root directory of the working copy, and separately marking to extract the directories `t` and `Documentation`, you can specify:

    $ git clone --filter=blob:none --sparse git@github.com:git/git.git

    $ cd git
    $ git sparse-checkout init --cone

    $ git sparse-checkout add t
    ….
    $ git sparse-checkout add Documentation
    ….
    $ git sparse-checkout list
    Documentation
    t

  • The performance of the `git grep` command, used for searching both the current contents of the repository and historical revisions, has significantly improved. To speed up the search, scanning the working tree contents using multiple threads (`git grep --threads`) was allowed, but searching in historical revisions was single-threaded. This limitation has now been removed by implementing the capability to parallelize read operations from the object store. By default, the number of threads is set to the number of CPU cores, which in most cases now does not require explicitly setting the `--threads` option.
  • Support has been added for auto-completion of subcommands, paths, links, and other arguments for the `git worktree` command, allowing you to work with multiple working copies of the repository.
  • Support for bright colors has been added, for which ANSI escape sequences are available. For example, in the color highlighting settings "git config --color" or "git diff --color-moved" through the "--format" option for bright blue, you can specify "%C(brightblue)".
  • A new version of the script has been added. fsmonitor-watchman, providing integration with the Facebook Watchman to accelerate file change tracking and the appearance of new files. After updating Git, you need to replace the hook in the repository.
  • Optimizations have been added to speed up partial cloning operations related to the use of bitmap machinery to avoid a full scan of all objects during the filtering of output. Checking for blobs (--filter=blob:none and --filter=blob:limit=n) during partial cloning is now done
    significantly faster. GitHub has announced the application of patches with these optimizations and experimental support for partial cloning.
    The "git rebase" command has been migrated to a different backend that by default uses the 'merge' mechanism (previously used for "rebase -i") instead of 'patch+apply'. In some details, the backends differ; for example, after continuing the operation following a conflict resolution (git rebase --continue), the new backend offers to edit the commit message, while the old one simply used the old message. To revert to the old behavior, you can use the "--apply" option or set the configuration variable 'rebase.backend' to 'apply'.
  • An example of an authentication parameter handler specified via .netrc has been formatted for out-of-the-box use.
  • A gpg.minTrustLevel setting has been added to specify the minimum trust level for various elements performing digital signature verification.
  • The option "--pathspec-from-file" has been added to "git rm" and "git stash."
  • The enhancement of test suites has continued in preparation for the transition to the SHA-2 hashing algorithm instead of SHA-1.
  • Google will skip the release of Chrome 82.

Source: opennet.ru

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