[ANNOUNCEMENT] Updated: Git v2.36.0

Adam Dinwoodie adam@dinwoodie.org
Tue Apr 19 07:46:02 GMT 2022

Version 2.36.0 of Git has been uploaded to the Cygwin distribution
servers, and should be coming soon to a mirror near you.

Git is a free and open source distributed version control system
designed to handle everything from small to very large projects with
speed and efficiency.

This is an update to the latest upstream release, and includes the
following packages:

- git
- git-cvs
- git-debuginfo
- git-email
- git-gui
- gitk
- git-p4
- git-svn

Key extracts from the changelog:

> Backward compatibility warts
>  * "git name-rev --stdin" has been deprecated and issues a warning
>    when used; use "git name-rev --annotate-stdin" instead.
>  * "git clone --filter=... --recurse-submodules" only makes the
>    top-level a partial clone, while submodules are fully cloned.  This
>    behaviour is changed to pass the same filter down to the submodules.
>  * With the fixes for CVE-2022-24765 that are common with versions of
>    Git 2.30.4, 2.31.3, 2.32.2, 2.33.3, 2.34.3, and 2.35.3, Git has
>    been taught not to recognise repositories owned by other users, in
>    order to avoid getting affected by their config files and hooks.
>    You can list the path to the safe/trusted repositories that may be
>    owned by others on a multi-valued configuration variable
>    `safe.directory` to override this behaviour, or use '*' to declare
>    that you trust anything.
> UI, Workflows & Features
>  * Assorted updates to "git cat-file", especially "-h".
>  * "git log --remerge-diff" shows the difference from mechanical merge
>    result and the result that is actually recorded in a merge commit.
>  * "git log" and friends learned an option --exclude-first-parent-only
>    to propagate UNINTERESTING bit down only along the first-parent
>    chain, just like --first-parent option shows commits that lack the
>    UNINTERESTING bit only along the first-parent chain.
>  * "git branch" learned the "--recurse-submodules" option.
>  * A user can forget to make a script file executable before giving
>    it to "git bisect run".  In such a case, all tests will exit with
>    126 or 127 error codes, even on revisions that are marked as good.
>    Try to recognize this situation and stop iteration early.
>  * When "index-pack" dies due to incoming data exceeding the maximum
>    allowed input size, include the value of the limit in the error
>    message.
>  * The error message given by "git switch HEAD~4" has been clarified
>    to suggest the "--detach" option that is required.
>  * In sparse-checkouts, files mis-marked as missing from the working tree
>    could lead to later problems.  Such files were hard to discover, and
>    harder to correct.  Automatically detecting and correcting the marking
>    of such files has been added to avoid these problems.
>  * "git cat-file" learns "--batch-command" mode, which is a more
>    flexible interface than the existing "--batch" or "--batch-check"
>    modes, to allow different kinds of inquiries made.
>  * The level of verbose output from the ort backend during inner merge
>    has been aligned to that of the recursive backend.
>  * "git remote rename A B", depending on the number of remote-tracking
>    refs involved, takes long time renaming them.  The command has been
>    taught to show progress bar while making the user wait.
>  * Bundle file format gets extended to allow a partial bundle,
>    filtered by similar criteria you would give when making a
>    partial/lazy clone.
>  * A new built-in userdiff driver for kotlin has been added.
>  * "git repack" learned a new configuration to disable triggering of
>    age-old "update-server-info" command, which is rarely useful these
>    days.
>  * "git stash" does not allow subcommands it internally runs as its
>    implementation detail, except for "git reset", to emit messages;
>    now "git reset" part has also been squelched.
>  * "git ls-tree" learns "--oid-only" option, similar to "--name-only",
>    and more generalized "--format" option.
>  * "git fetch --refetch" learned to fetch everything without telling
>    the other side what we already have, which is useful when you
>    cannot trust what you have in the local object store.
>  * "git branch" gives hint when branch tracking cannot be established
>    because fetch refspecs from multiple remote repositories overlap.
>  * "git worktree list --porcelain" did not c-quote pathnames and lock
>    reasons with unsafe bytes correctly, which is worked around by
>    introducing NUL terminated output format with "-z".

For a full list of the upstream changes in this release, please refer to
the upstream changelogs:



More information about the Cygwin mailing list