Relnotes

1.5.0.1

GIT v1.5.0.1 Release Notes ==========================

Fixes since v1.5.0 ------------------

1.5.0.2

GIT v1.5.0.2 Release Notes ==========================

Fixes since v1.5.0.1 --------------------

1.5.0.3

GIT v1.5.0.3 Release Notes ==========================

Fixes since v1.5.0.2 --------------------

1.5.0.4

GIT v1.5.0.4 Release Notes ==========================

Fixes since v1.5.0.3 --------------------

1.5.0.5

GIT v1.5.0.5 Release Notes ==========================

Fixes since v1.5.0.3 --------------------

1.5.0.6

GIT v1.5.0.6 Release Notes ==========================

Fixes since v1.5.0.5 --------------------

1.5.0.7

GIT v1.5.0.7 Release Notes ==========================

Fixes since v1.5.0.6 --------------------

1.5.0

GIT v1.5.0 Release Notes ========================

Old news --------

This section is for people who are upgrading from ancient versions of git. Although all of the changes in this section happened before the current v1.4.4 release, they are summarized here in the v1.5.0 release notes for people who skipped earlier versions.

As of git v1.5.0 there are some optional features that changes the repository to allow data to be stored and transferred more efficiently. These features are not enabled by default, as they will make the repository unusable with older versions of git. Specifically, the available options are:

To let git use the new loose object format, you have to
set core.legacyheaders to false.
To let git use the new format for packfiles, you have to
set repack.usedeltabaseoffset to true.

The above two new features are not enabled by default and you have to explicitly ask for them, because they make repositories unreadable by older versions of git, and in v1.5.0 we still do not enable them by default for the same reason. We will change this default probably 1 year after 1.4.2’s release, when it is reasonable to expect everybody to have new enough version of git.

Updates in v1.5.0 since v1.4.4 series -------------------------------------

A repository with the separate remote layout starts with only
one default branch, 'master', to be used for your own
development.  Unlike the traditional layout that copied all
the upstream branches into your branch namespace (while
renaming their 'master' to your 'origin'), the new layout
puts upstream branches into local "remote-tracking branches"
with their own namespace. These can be referenced with names
such as "origin/$upstream_branch_name" and are stored in
.git/refs/remotes rather than .git/refs/heads where normal
branches are stored.

This layout keeps your own branch namespace less cluttered,
avoids name collision with your upstream, makes it possible
to automatically track new branches created at the remote
after you clone from it, and makes it easier to interact with
more than one remote repository (you can use "git remote" to
add other repositories to track).  There might be some
surprises:
Repositories initialized with the traditional layout continue
to work.
Existing repositories that have been using reflog may get
complaints from fsck-objects and may not be able to run
git-repack, if you had run git-prune from older git; please
run "git reflog expire --stale-fix --all" first to remove
reflog entries that refer to commits that are no longer in
the repository when that happens.
A typical use of this feature is to "look around".  E.g.

$ git checkout v2.6.16
... compile, test, etc.
$ git checkout v2.6.17
... compile, test, etc.
Remember that a detached state is volatile, i.e. it will be forgotten
as soon as you move away from it with the checkout or reset command,
unless a branch is created from it as mentioned above.  It is also
possible to rescue a lost detached state from the HEAD reflog.
v2.6.20-rc5-306-ga21b069

which tells you that its object name begins with a21b069,
v2.6.20-rc5 is an ancestor of it (meaning, the commit
contains everything -rc5 has), and there are 306 commits
since v2.6.20-rc5.
Currently a shallow repository has number of limitations:
but this would be more than adequate for people who want to
look at near the tip of a big project with a deep history and
send patches in e-mail format.

1.5.1.1

GIT v1.5.1.1 Release Notes ==========================

Fixes since v1.5.1 ------------------

1.5.1.2

GIT v1.5.1.2 Release Notes ==========================

Fixes since v1.5.1.1 --------------------

1.5.1.3

GIT v1.5.1.3 Release Notes ==========================

Fixes since v1.5.1.2 --------------------

Also contains various documentation updates.

1.5.1.4

GIT v1.5.1.4 Release Notes ==========================

Fixes since v1.5.1.3 --------------------

1.5.1.5

GIT v1.5.1.5 Release Notes ==========================

Fixes since v1.5.1.4 --------------------

1.5.1.6

GIT v1.5.1.6 Release Notes ==========================

Fixes since v1.5.1.4 --------------------

1.5.1

GIT v1.5.1 Release Notes ========================

Updates since v1.5.0 --------------------

$ git show ":/object name: introduce ':/<oneline prefix>' notation"

means the same thing as:

$ git show 28a4d940443806412effa246ecc7768a21553ec7

Fixes since v1.5.0 ------------------

These are all in v1.5.0.x series.

1.5.2.1

GIT v1.5.2.1 Release Notes ==========================

Fixes since v1.5.2 ------------------

1.5.2.2

GIT v1.5.2.2 Release Notes ==========================

Fixes since v1.5.2.1 --------------------

1.5.2.3

GIT v1.5.2.3 Release Notes ==========================

Fixes since v1.5.2.2 --------------------

1.5.2.4

GIT v1.5.2.4 Release Notes ==========================

Fixes since v1.5.2.3 --------------------

1.5.2.5

GIT v1.5.2.5 Release Notes ==========================

Fixes since v1.5.2.4 --------------------

1.5.2

GIT v1.5.2 Release Notes ========================

Updates since v1.5.1 --------------------

You can include a subdirectory that has an independent git
repository in your index and tree objects of your project
("superproject").  This plumbing (i.e. "core") level
superproject support explicitly excludes recursive behaviour.

The "subproject" entries in the index and trees of a superproject
are incompatible with older versions of git.  Experimenting with
the plumbing level support is encouraged, but be warned that
unless everybody in your project updates to this release or
later, using this feature would make your project
inaccessible by people with older versions of git.
The gitattributes mechanism allows you to add 'attributes' to
paths in your project, and affect the way certain git
operations work.  Currently you can influence if a path is
considered a binary or text (the former would be treated by
'git diff' not to produce textual output; the latter can go
through the line endings conversion process in repositories
with core.autocrlf set), expand and unexpand '$Id$' keyword
with blob object name, specify a custom 3-way merge driver,
and specify a custom diff driver.  You can also apply
arbitrary filter to contents on check-in/check-out codepath
but this feature is an extremely sharp-edged razor and needs
to be handled with caution (do not use it unless you
understand the earlier mailing list discussion on keyword
expansion).  These conversions apply when checking files in
or out, and exporting via git-archive.
This release supports the "version 2" format of the .idx
file.  This is automatically enabled when a huge packfile
needs more than 32-bit to express offsets of objects in the
pack.

Fixes since v1.5.1 ------------------

All of the fixes in v1.5.1 maintenance series are included in this release, unless otherwise noted.

1.5.3.1

GIT v1.5.3.1 Release Notes ==========================

Fixes since v1.5.3 ------------------

This is solely to fix the generated RPM’s dependencies. We used to have git-p4 package but we do not anymore. As suggested on the mailing list, this release makes git-core "Obsolete" git-p4, so that yum update would not complain.

1.5.3.2

GIT v1.5.3.2 Release Notes ==========================

Fixes since v1.5.3.1 --------------------

Documentation updates ---------------------

User manual has been somewhat restructured. I think the new organization is much easier to read.

1.5.3.3

GIT v1.5.3.3 Release Notes ==========================

Fixes since v1.5.3.2 --------------------

1.5.3.4

GIT v1.5.3.4 Release Notes ==========================

Fixes since v1.5.3.3 --------------------

1.5.3.5

GIT v1.5.3.5 Release Notes ==========================

Fixes since v1.5.3.4 --------------------

1.5.3.6

GIT v1.5.3.6 Release Notes ==========================

Fixes since v1.5.3.5 --------------------

1.5.3.7

GIT v1.5.3.7 Release Notes ==========================

Fixes since v1.5.3.6 --------------------

Also it contains updates to the user manual and documentation.

1.5.3.8

GIT v1.5.3.8 Release Notes ==========================

Fixes since v1.5.3.7 --------------------

1.5.3

GIT v1.5.3 Release Notes ========================

Updates since v1.5.2 --------------------

Note that the current submodule support is minimal and this is
deliberately so.  A design decision we made is that operations
at the supermodule level do not recurse into submodules by
default.  The expectation is that later we would add a
mechanism to tell git which submodules the user is interested
in, and this information might be used to determine the
recursive behaviour of certain commands (e.g. "git checkout"
and "git diff"), but currently we haven't agreed on what that
mechanism should look like.  Therefore, if you use submodules,
you would probably need "git submodule update" on the
submodules you care about after running a "git checkout" at
the supermodule level.
***NOTE*** Unfortunately, this changes the format of the
$feature{snapshot}{default} entry in the per-site
configuration file 'gitweb_config.perl'.  It used to be a
three-element tuple that describe a single format; with the
new configuration item format, you only have to say the name
of the format ('tgz', 'tbz2' or 'zip').  Please update the
your configuration file accordingly.

Fixes since v1.5.2 ------------------

All of the fixes in v1.5.2 maintenance series are included in this release, unless otherwise noted.

1.5.4.1

GIT v1.5.4.1 Release Notes ==========================

Fixes since v1.5.4 ------------------

1.5.4.2

GIT v1.5.4.2 Release Notes ==========================

Fixes since v1.5.4 ------------------

1.5.4.3

GIT v1.5.4.3 Release Notes ==========================

Fixes since v1.5.4.2 --------------------

1.5.4.4

GIT v1.5.4.4 Release Notes ==========================

Fixes since v1.5.4.3 --------------------

Also included are a handful documentation updates.

1.5.4.5

GIT v1.5.4.5 Release Notes ==========================

Fixes since v1.5.4.4 --------------------

As usual, it also comes with many documentation fixes and clarifications.

1.5.4.6

GIT v1.5.4.6 Release Notes ==========================

I personally do not think there is any reason anybody should want to run v1.5.4.X series these days, because ’master’ version is always more stable than any tagged released version of git.

This is primarily to futureproof "git-shell" to accept requests without a dash between "git" and subcommand name (e.g. "git upload-pack") which the newer client will start to make sometime in the future.

Fixes since v1.5.4.5 --------------------

As usual, it also comes with many documentation fixes and clarifications.

1.5.4.7

GIT v1.5.4.7 Release Notes ==========================

Fixes since 1.5.4.7 -------------------

1.5.4

GIT v1.5.4 Release Notes ========================

Removal -------

Temporarily disabled --------------------

Deprecation notices -------------------

Users are strongly encouraged to adjust their habits and scripts now
to prepare for this change.

Updates since v1.5.3 --------------------

Fixes since v1.5.3 ------------------

All of the fixes in v1.5.3 maintenance series are included in this release, unless otherwise noted.

These fixes are only in v1.5.4 and not backported to v1.5.3 maintenance series.

1.5.5.1

GIT v1.5.5.1 Release Notes ==========================

Fixes since v1.5.5 ------------------

Also comes with various documentation updates.

1.5.5.2

GIT v1.5.5.2 Release Notes ==========================

Fixes since v1.5.5.1 --------------------

Also comes with various documentation updates.

1.5.5.3

GIT v1.5.5.3 Release Notes ==========================

Fixes since v1.5.5.2 --------------------

Also comes with various documentation updates.

1.5.5.4

GIT v1.5.5.4 Release Notes ==========================

Fixes since v1.5.5.4 --------------------

1.5.5.5

GIT v1.5.5.5 Release Notes ==========================

I personally do not think there is any reason anybody should want to run v1.5.5.X series these days, because ’master’ version is always more stable than any tagged released version of git.

This is primarily to futureproof "git-shell" to accept requests without a dash between "git" and subcommand name (e.g. "git upload-pack") which the newer client will start to make sometime in the future.

1.5.5.6

GIT v1.5.5.6 Release Notes ==========================

Fixes since 1.5.5.5 -------------------

1.5.5

GIT v1.5.5 Release Notes ========================

Updates since v1.5.4 --------------------

(subsystems)

(portability)

(performance)

(usability, bells and whistles)

(internal)

Fixes since v1.5.4 ------------------

All of the fixes in v1.5.4 maintenance series are included in this release, unless otherwise noted.

1.5.6.1

GIT v1.5.6.1 Release Notes ==========================

Fixes since v1.5.6 ------------------

1.5.6.2

GIT v1.5.6.2 Release Notes ==========================

Futureproof -----------

Fixes since v1.5.6.1 --------------------

1.5.6.3

GIT v1.5.6.3 Release Notes ==========================

Fixes since v1.5.6.2 --------------------

Contains other various documentation fixes.

1.5.6.4

GIT v1.5.6.4 Release Notes ==========================

Fixes since v1.5.6.3 --------------------

Contains other various documentation fixes.

1.5.6.5

GIT v1.5.6.5 Release Notes ==========================

Fixes since v1.5.6.4 --------------------

Contains other various documentation fixes.

1.5.6.6

GIT v1.5.6.6 Release Notes ==========================

Fixes since 1.5.6.5 -------------------

1.5.6

GIT v1.5.6 Release Notes ========================

Updates since v1.5.5 --------------------

(subsystems)

(portability)

(documentation)

(performance)

(usability, bells and whistles)

(internal)

Fixes since v1.5.5 ------------------

All of the fixes in v1.5.5 maintenance series are included in this release, unless otherwise noted.

And there are too numerous small fixes to otherwise note here ;-)

1.6.0.1

GIT v1.6.0.1 Release Notes ==========================

Fixes since v1.6.0 ------------------

Contains other various documentation fixes.

1.6.0.2

GIT v1.6.0.2 Release Notes ==========================

Fixes since v1.6.0.1 --------------------

Also contains many documentation updates.

1.6.0.3

GIT v1.6.0.3 Release Notes ==========================

Fixes since v1.6.0.2 --------------------

Many other documentation updates.

1.6.0.4

GIT v1.6.0.4 Release Notes ==========================

Fixes since v1.6.0.3 --------------------

1.6.0.5

GIT v1.6.0.5 Release Notes ==========================

Fixes since v1.6.0.4 --------------------

1.6.0.6

GIT v1.6.0.6 Release Notes ==========================

Fixes since 1.6.0.5 -------------------

Also contains numerous documentation typofixes.

1.6.0

GIT v1.6.0 Release Notes ========================

User visible changes --------------------

With the default Makefile settings, most of the programs are now installed outside your $PATH, except for "git", "gitk" and some server side programs that need to be accessible for technical reasons. Invoking a git subcommand as "git-xyzzy" from the command line has been deprecated since early 2006 (and officially announced in 1.5.4 release notes); use of them from your scripts after adding output from "git --exec-path" to the $PATH is still supported in this release, but users are again strongly encouraged to adjust their scripts to use "git xyzzy" form, as we will stop installing "git-xyzzy" hardlinks for built-in commands in later releases.

An earlier change to page "git status" output was overwhelmingly unpopular and has been reverted.

Source changes needed for porting to MinGW environment are now all in the main git.git codebase.

By default, packfiles created with this version uses delta-base-offset encoding introduced in v1.4.4. Pack idx files are using version 2 that allows larger packs and added robustness thanks to its CRC checking, introduced in v1.5.2 and v1.4.4.5. If you want to keep your repositories backwards compatible past these versions, set repack.useDeltaBaseOffset to false or pack.indexVersion to 1, respectively.

We used to prevent sample hook scripts shipped in templates/ from triggering by default by relying on the fact that we install them as unexecutable, but on some filesystems, this approach does not work. They are now shipped with ".sample" suffix. If you want to activate any of these samples as-is, rename them to drop the ".sample" suffix, instead of running "chmod +x" on them. For example, you can rename hooks/post-update.sample to hooks/post-update to enable the sample hook that runs update-server-info, in order to make repositories friendly to dumb protocols (i.e. HTTP).

GIT_CONFIG, which was only documented as affecting "git config", but actually affected all git commands, now only affects "git config". GIT_LOCAL_CONFIG, also only documented as affecting "git config" and not different from GIT_CONFIG in a useful way, is removed.

The ".dotest" temporary area "git am" and "git rebase" use is now moved inside the $GIT_DIR, to avoid mistakes of adding it to the project by accident.

An ancient merge strategy "stupid" has been removed.

Updates since v1.5.6 --------------------

(subsystems)

(portability)

(documentation)

(performance, robustness, sanity etc.)

(usability, bells and whistles)

(internal)

Fixes since v1.5.6 ------------------

All of the fixes in v1.5.6 maintenance series are included in this release, unless otherwise noted.

1.6.1.1

GIT v1.6.1.1 Release Notes ==========================

Fixes since v1.6.1 ------------------

Many documentation updates.

1.6.1.2

GIT v1.6.1.2 Release Notes ==========================

Fixes since v1.6.1.1 --------------------

1.6.1.3

GIT v1.6.1.3 Release Notes ==========================

Fixes since v1.6.1.2 --------------------

Also includes minor documentation fixes and updates.

1.6.1.4

GIT v1.6.1.4 Release Notes ==========================

Fixes since v1.6.1.3 --------------------

Also includes minor documentation fixes and updates.

1.6.1

GIT v1.6.1 Release Notes ========================

Updates since v1.6.0 --------------------

When some commands (e.g. "git log", "git diff") spawn pager internally, we used to make the pager the parent process of the git command that produces output. This meant that the exit status of the whole thing comes from the pager, not the underlying git command. We swapped the order of the processes around and you will see the exit code from the command from now on.

(subsystems)

(portability)

(performance)

(usability, bells and whistles)

(internal)

Fixes since v1.6.0 ------------------

All of the fixes in v1.6.0.X maintenance series are included in this release, unless otherwise noted.

1.6.2.1

GIT v1.6.2.1 Release Notes ==========================

Fixes since v1.6.2 ------------------

1.6.2.2

GIT v1.6.2.2 Release Notes ==========================

Fixes since v1.6.2.1 --------------------

Many small documentation updates are included as well.

1.6.2.3

GIT v1.6.2.3 Release Notes ==========================

Fixes since v1.6.2.2 --------------------

Many small documentation updates are included as well.

1.6.2.4

GIT v1.6.2.4 Release Notes ==========================

Fixes since v1.6.2.3 --------------------

Many small documentation updates are included as well.


exec >/var/tmp/1 echo O=$(git describe maint) O=v1.6.2.3-38-g318b847 git shortlog --no-merges $O..maint ---

1.6.2.5

GIT v1.6.2.5 Release Notes ==========================

Fixes since v1.6.2.4 --------------------

1.6.2

GIT v1.6.2 Release Notes ========================

With the next major release, "git push" into a branch that is currently checked out will be refused by default. You can choose what should happen upon such a push by setting the configuration variable receive.denyCurrentBranch in the receiving repository.

To ease the transition plan, the receiving repository of such a push running this release will issue a big warning when the configuration variable is missing. Please refer to:

https://archive.kernel.org/oldwiki/git.wiki.kernel.org/index.php/GitFaq.html#non-bare
https://lore.kernel.org/git/7vbptlsuyv.fsf@gitster.siamese.dyndns.org/

for more details on the reason why this change is needed and the transition plan.

For a similar reason, "git push $there :$killed" to delete the branch $killed in a remote repository $there, if $killed branch is the current branch pointed at by its HEAD, gets a large warning. You can choose what should happen upon such a push by setting the configuration variable receive.denyDeleteCurrent in the receiving repository.

Updates since v1.6.1 --------------------

(subsystems)

(performance)

(usability, bells and whistles)

Fixes since v1.6.1 ------------------

All of the fixes in v1.6.1.X maintenance series are included in this release, unless otherwise noted.

Here are fixes that this release has, but have not been backported to v1.6.1.X series.

1.6.3.1

GIT v1.6.3.1 Release Notes ==========================

Fixes since v1.6.3 ------------------

1.6.3.2

GIT v1.6.3.2 Release Notes ==========================

Fixes since v1.6.3.1 --------------------

Many other general usability updates around help text, diagnostic messages and documentation are included as well.

1.6.3.3

GIT v1.6.3.3 Release Notes ==========================

Fixes since v1.6.3.2 --------------------

Includes other documentation fixes.

1.6.3.4

GIT v1.6.3.4 Release Notes ==========================

Fixes since v1.6.3.3 --------------------

Includes other documentation updates and minor fixes.

1.6.3

GIT v1.6.3 Release Notes ========================

With the next major release, "git push" into a branch that is currently checked out will be refused by default. You can choose what should happen upon such a push by setting the configuration variable receive.denyCurrentBranch in the receiving repository.

To ease the transition plan, the receiving repository of such a push running this release will issue a big warning when the configuration variable is missing. Please refer to:

https://archive.kernel.org/oldwiki/git.wiki.kernel.org/index.php/GitFaq.html#non-bare
https://lore.kernel.org/git/7vbptlsuyv.fsf@gitster.siamese.dyndns.org/

for more details on the reason why this change is needed and the transition plan.

For a similar reason, "git push $there :$killed" to delete the branch $killed in a remote repository $there, if $killed branch is the current branch pointed at by its HEAD, gets a large warning. You can choose what should happen upon such a push by setting the configuration variable receive.denyDeleteCurrent in the receiving repository.

When the user does not tell "git push" what to push, it has always pushed matching refs. For some people it is unexpected, and a new configuration variable push.default has been introduced to allow changing a different default behaviour. To advertise the new feature, a big warning is issued if this is not configured and a git push without arguments is attempted.

Updates since v1.6.2 --------------------

(subsystems)

(performance)

(usability, bells and whistles)

(developers)

Fixes since v1.6.2 ------------------

All of the fixes in v1.6.2.X maintenance series are included in this release, unless otherwise noted.

Here are fixes that this release has, but have not been backported to v1.6.2.X series.

1.6.4.1

GIT v1.6.4.1 Release Notes ==========================

Fixes since v1.6.4 ------------------

Other minor documentation updates are included.

1.6.4.2

GIT v1.6.4.2 Release Notes ==========================

Fixes since v1.6.4.1 --------------------

Other minor documentation updates are included.

1.6.4.3

GIT v1.6.4.3 Release Notes ==========================

Fixes since v1.6.4.2 --------------------

Other minor documentation updates are included.

1.6.4.4

GIT v1.6.4.4 Release Notes ==========================

Fixes since v1.6.4.4 --------------------

Other minor documentation updates are included.

1.6.4.5

Git v1.6.4.5 Release Notes ==========================

Fixes since v1.6.4.4 --------------------

Other minor fixes and documentation updates are included.

1.6.4

GIT v1.6.4 Release Notes ========================

With the next major release, "git push" into a branch that is currently checked out will be refused by default. You can choose what should happen upon such a push by setting the configuration variable receive.denyCurrentBranch in the receiving repository.

To ease the transition plan, the receiving repository of such a push running this release will issue a big warning when the configuration variable is missing. Please refer to:

https://archive.kernel.org/oldwiki/git.wiki.kernel.org/index.php/GitFaq.html#non-bare
https://lore.kernel.org/git/7vbptlsuyv.fsf@gitster.siamese.dyndns.org/

for more details on the reason why this change is needed and the transition plan.

For a similar reason, "git push $there :$killed" to delete the branch $killed in a remote repository $there, if $killed branch is the current branch pointed at by its HEAD, gets a large warning. You can choose what should happen upon such a push by setting the configuration variable receive.denyDeleteCurrent in the receiving repository.

Updates since v1.6.3 --------------------

(subsystems)

(portability)

(performance)

(usability, bells and whistles)

(developers)

Fixes since v1.6.3 ------------------

All of the fixes in v1.6.3.X maintenance series are included in this release, unless otherwise noted.

Here are fixes that this release has, but have not been backported to v1.6.3.X series.

1.6.5.1

GIT v1.6.5.1 Release Notes ==========================

Fixes since v1.6.5 ------------------

Other minor documentation updates are included.

1.6.5.2

GIT v1.6.5.2 Release Notes ==========================

Fixes since v1.6.5.1 --------------------

Other minor documentation updates are included.

1.6.5.3

Git v1.6.5.3 Release Notes ==========================

Fixes since v1.6.5.2 --------------------

Other minor documentation updates are included.

1.6.5.4

Git v1.6.5.4 Release Notes ==========================

Fixes since v1.6.5.3 --------------------

Other minor documentation updates are included.

1.6.5.5

Git v1.6.5.5 Release Notes ==========================

Fixes since v1.6.5.4 --------------------

Other minor documentation updates are included.

1.6.5.6

Git v1.6.5.6 Release Notes ==========================

Fixes since v1.6.5.5 --------------------

1.6.5.7

Git v1.6.5.7 Release Notes ==========================

Fixes since v1.6.5.6 --------------------

1.6.5.8

Git v1.6.5.8 Release Notes ==========================

Fixes since v1.6.5.7 --------------------

Other minor documentation updates are also included.

1.6.5.9

Git v1.6.5.9 Release Notes ==========================

Fixes since v1.6.5.8 --------------------

Other minor fixes and documentation updates are included.

1.6.5

GIT v1.6.5 Release Notes ========================

In git 1.7.0, which was planned to be the release after 1.6.5, "git push" into a branch that is currently checked out will be refused by default.

You can choose what should happen upon such a push by setting the configuration variable receive.denyCurrentBranch in the receiving repository.

Also, "git push $there :$killed" to delete the branch $killed in a remote repository $there, when $killed branch is the current branch pointed at by its HEAD, will be refused by default.

You can choose what should happen upon such a push by setting the configuration variable receive.denyDeleteCurrent in the receiving repository.

To ease the transition plan, the receiving repository of such a push running this release will issue a big warning when the configuration variable is missing. Please refer to:

https://archive.kernel.org/oldwiki/git.wiki.kernel.org/index.php/GitFaq.html#non-bare
https://lore.kernel.org/git/7vbptlsuyv.fsf@gitster.siamese.dyndns.org/

for more details on the reason why this change is needed and the transition plan.

Updates since v1.6.4 --------------------

(subsystems)

(portability)

(performance)

(usability, bells and whistles)

(developers)

Fixes since v1.6.4 ------------------

All of the fixes in v1.6.4.X maintenance series are included in this release, unless otherwise noted.

1.6.6.1

Git v1.6.6.1 Release Notes ==========================

Fixes since v1.6.6 ------------------

Other minor documentation updates are included.

1.6.6.2

Git v1.6.6.2 Release Notes ==========================

Fixes since v1.6.6.1 --------------------

Other minor documentation updates are included.

1.6.6.3

Git v1.6.6.3 Release Notes ==========================

Fixes since v1.6.6.2 --------------------

Other minor fixes and documentation updates are included.

1.6.6

Git v1.6.6 Release Notes ========================

Notes on behaviour change -------------------------

Preparing yourselves for compatibility issues in 1.7.0 ------------------------------------------------------

In git 1.7.0, which is planned to be the release after 1.6.6, there will be a handful of behaviour changes that will break backward compatibility.

These changes were discussed long time ago and existing behaviours have been identified as more problematic to the userbase than keeping them for the sake of backward compatibility.

When necessary, a transition strategy for existing users has been designed not to force them running around setting configuration variables and updating their scripts in order to either keep the traditional behaviour or adjust to the new behaviour, on the day their sysadmin decides to install the new version of git. When we switched from "git-foo" to "git foo" in 1.6.0, even though the change had been advertised and the transition guide had been provided for a very long time, the users procrastinated during the entire transition period, and ended up panicking on the day their sysadmins updated their git installation. We are trying to avoid repeating that unpleasantness in the 1.7.0 release.

For changes decided to be in 1.7.0, commands that will be affected have been much louder to strongly discourage such procrastination, and they continue to be in this release. If you have been using recent versions of git, you would have seen warnings issued when you used features whose behaviour will change, with a clear instruction on how to keep the existing behaviour if you want to. You hopefully are already well prepared.

Of course, we have also been giving "this and that will change in 1.7.0; prepare yourselves" warnings in the release notes and announcement messages for the past few releases. Let’s see how well users will fare this time.

Similarly, "git push $there :$killed" to delete the branch $killed
in a remote repository $there, when $killed branch is the current
branch pointed at by its HEAD, will be refused by default.

Setting the configuration variables receive.denyCurrentBranch and
receive.denyDeleteCurrent to 'ignore' in the receiving repository
can be used to override these safety features.  Versions of git
since 1.6.2 have issued a loud warning when you tried to do these
operations without setting the configuration, so repositories of
people who still need to be able to perform such a push should
already have been future proofed.

Please refer to:

https://archive.kernel.org/oldwiki/git.wiki.kernel.org/index.php/GitFaq.html#non-bare
https://lore.kernel.org/git/7vbptlsuyv.fsf@gitster.siamese.dyndns.org/

for more details on the reason why this change is needed and the
transition process that already took place so far.
It has been possible to configure send-email to send "shallow thread"
by setting sendemail.chainreplyto configuration variable to false.
The only thing 1.7.0 release will do is to change the default when
you haven't configured that variable.
Nobody sane found the current behaviour of "git status Makefile" useful
nor meaningful, and it confused users.  "git commit --dry-run" has been
provided as a way to get the current behaviour of this command since
1.6.5.
In 1.7.0, the "ignore whitespaces" will affect the semantics of the
diff operation itself.  A change that does not affect anything but
whitespaces will be reported with zero exit status when run with
--exit-code, and there will not be "diff --git" header for such a
change.

Updates since v1.6.5 --------------------

(subsystems)

(portability)

(performance)

(usability, bells and whistles)

  1. to wrap text with the "%w()" specifier.

  2. to show reflog information with "%g[sdD]" specifier.

Fixes since v1.6.5 ------------------

All of the fixes in v1.6.5.X maintenance series are included in this release, unless otherwise noted.

1.7.0.1

Git v1.7.0.1 Release Notes ==========================

Fixes since v1.7.0 ------------------

And other minor fixes and documentation updates.

1.7.0.2

Git v1.7.0.2 Release Notes ==========================

Fixes since v1.7.0.1 --------------------

And other minor fixes and documentation updates.

1.7.0.3

Git v1.7.0.3 Release Notes ==========================

Fixes since v1.7.0.2 --------------------

And other minor fixes and documentation updates.

1.7.0.4

Git v1.7.0.4 Release Notes ==========================

Fixes since v1.7.0.3 --------------------

And other minor fixes and documentation updates.

1.7.0.5

Git v1.7.0.5 Release Notes ==========================

Fixes since v1.7.0.4 --------------------

And other minor fixes and documentation updates.

1.7.0.6

Git v1.7.0.6 Release Notes ==========================

Fixes since v1.7.0.5 --------------------

And other minor fixes and documentation updates.

1.7.0.7

Git v1.7.0.7 Release Notes ==========================

Fixes since v1.7.0.6 --------------------

And other minor fixes and documentation updates.

1.7.0.8

Git v1.7.0.8 Release Notes ==========================

This is primarily to backport support for the new "add.ignoreErrors" name given to the existing "add.ignore-errors" configuration variable.

The next version, Git 1.7.4, and future versions, will support both old and incorrect name and the new corrected name, but without this backport, users who want to use the new name "add.ignoreErrors" in their repositories cannot use older versions of Git.

1.7.0.9

Git v1.7.0.9 Release Notes ==========================

Fixes since v1.7.0.8 --------------------

1.7.0

Git v1.7.0 Release Notes ========================

Notes on behaviour change -------------------------

Similarly, "git push $there :$killed" to delete the branch $killed
in a remote repository $there, when $killed branch is the current
branch pointed at by its HEAD, will be refused by default.

Setting the configuration variables receive.denyCurrentBranch and
receive.denyDeleteCurrent to 'ignore' in the receiving repository
can be used to override these safety features.
It has been possible already to configure send-email to send "shallow thread"
by setting sendemail.chainreplyto configuration variable to false.  The
only thing this release does is to change the default when you haven't
configured that variable.
In this release, the "ignore whitespaces" options affect the semantics
of the diff operation.  A change that does not affect anything but
whitespaces is reported with zero exit status when run with
--exit-code, and there is no "diff --git" header for such a change.

Updates since v1.6.6 --------------------

(subsystems)

(portability)

(performance)

(usability, bells and whistles)

(developers)

Fixes since v1.6.6 ------------------

All of the fixes in v1.6.6.X maintenance series are included in this release, unless otherwise noted.

1.7.1.1

Git v1.7.1.1 Release Notes ==========================

Fixes since v1.7.1 ------------------

And other minor fixes and documentation updates.

1.7.1.2

Git v1.7.1.2 Release Notes ==========================

Fixes since v1.7.1.1 --------------------

And other minor fixes and documentation updates.

1.7.1.3

Git v1.7.1.3 Release Notes ==========================

This is primarily to backport support for the new "add.ignoreErrors" name given to the existing "add.ignore-errors" configuration variable.

The next version, Git 1.7.4, and future versions, will support both old and incorrect name and the new corrected name, but without this backport, users who want to use the new name "add.ignoreErrors" in their repositories cannot use older versions of Git.

1.7.1.4

Git v1.7.1.4 Release Notes ==========================

Fixes since v1.7.1.3 --------------------

1.7.1

Git v1.7.1 Release Notes ========================

Updates since v1.7.0 --------------------

Fixes since v1.7.0 ------------------

All of the fixes in v1.7.0.X maintenance series are included in this release, unless otherwise noted.

1.7.10.1

Git v1.7.10.1 Release Notes ===========================

Additions since v1.7.10 -----------------------

Localization message files for Danish and German have been added.

Fixes since v1.7.10 -------------------

Also contains minor fixes and documentation updates.

1.7.10.2

Git v1.7.10.2 Release Notes ===========================

Fixes since v1.7.10.1 ---------------------

Also contains minor fixes and documentation updates.

1.7.10.3

Git v1.7.10.3 Release Notes ===========================

Fixes since v1.7.10.2 ---------------------

Also contains minor fixes and documentation updates.

1.7.10.4

Git v1.7.10.4 Release Notes ===========================

Fixes since v1.7.10.3 ---------------------

Also contains minor fixes and documentation updates.

1.7.10.5

Git v1.7.10.5 Release Notes ===========================

Fixes since v1.7.10.4 ---------------------

1.7.10

Git v1.7.10 Release Notes =========================

Compatibility Notes -------------------

If you have a script that runs "git merge" and keeps its standard
input and output attached to the user's terminal, and if you do not
want the user to explain the resulting merge commits, you can
export GIT_MERGE_AUTOEDIT environment variable set to "no", like
this:

#!/bin/sh
GIT_MERGE_AUTOEDIT=no
export GIT_MERGE_AUTOEDIT

to disable this behavior (if you want your users to explain their
merge commits, you do not have to do anything).  Alternatively, you
can give the "--no-edit" option to individual invocations of the
"git merge" command if you know everybody who uses your script has
Git v1.7.8 or newer.

Updates since v1.7.9 --------------------

UI, Workflows & Features

Foreign Interface

Performance

Internal Implementation (please report possible regressions)

Also contains minor documentation updates and code clean-ups.

Fixes since v1.7.9 ------------------

Unless otherwise noted, all the fixes since v1.7.9 in the maintenance releases are contained in this release (see release notes to them for details).

1.7.11.1

Git v1.7.11.1 Release Notes ===========================

Fixes since v1.7.11 -------------------

Also contains minor typofixes and documentation updates.

1.7.11.2

Git v1.7.11.2 Release Notes ===========================

Fixes since v1.7.11.1 ---------------------

Also contains minor typofixes and documentation updates.

1.7.11.3

Git v1.7.11.3 Release Notes ===========================

Fixes since v1.7.11.3 ---------------------

Also contains minor typofixes and documentation updates.

1.7.11.4

Git v1.7.11.4 Release Notes ===========================

Fixes since v1.7.11.3 ---------------------

Also contains minor typofixes and documentation updates.

1.7.11.5

Git v1.7.11.5 Release Notes ===========================

Fixes since v1.7.11.4 ---------------------

Also contains minor typofixes and documentation updates.

1.7.11.6

Git v1.7.11.6 Release Notes ===========================

Fixes since v1.7.11.5 ---------------------

1.7.11.7

Git v1.7.11.7 Release Notes ===========================

Fixes since v1.7.11.6 ---------------------

1.7.11

Git v1.7.11 Release Notes =========================

Updates since v1.7.10 ---------------------

UI, Workflows & Features

Foreign Interface

Performance and Internal Implementation (please report possible regressions)

Also contains minor documentation updates and code clean-ups.

Fixes since v1.7.10 -------------------

Unless otherwise noted, all the fixes since v1.7.10 in the maintenance releases are contained in this release (see release notes to them for details).

1.7.12.1

Git 1.7.12.1 Release Notes ==========================

Fixes since v1.7.12 -------------------

Also contains numerous documentation updates.

1.7.12.2

Git 1.7.12.2 Release Notes ==========================

Fixes since v1.7.12.1 ---------------------

Also contains a handful of documentation updates.

1.7.12.3

Git 1.7.12.3 Release Notes ==========================

Fixes since v1.7.12.2 ---------------------

Also contains a handful of documentation updates.

1.7.12.4

Git 1.7.12.4 Release Notes ==========================

Fixes since v1.7.12.3 ---------------------

Also contains many documentation updates.

1.7.12

Git v1.7.12 Release Notes =========================

Updates since v1.7.11 ---------------------

UI, Workflows & Features

I think there still are other places that need conversion
(e.g. paths that are read from stdin for some commands), but this
should be a good first step in the right direction.

Foreign Interface

Performance, Internal Implementation, etc. (please report possible regressions)

Also contains minor documentation updates and code clean-ups.

Fixes since v1.7.11 -------------------

Unless otherwise noted, all the fixes since v1.7.11 in the maintenance releases are contained in this release (see release notes to them for details).

1.7.2.1

Git v1.7.2.1 Release Notes ==========================

Fixes since v1.7.2 ------------------

And other minor fixes and documentation updates.

1.7.2.2

Git v1.7.2.2 Release Notes ==========================

Fixes since v1.7.2.1 --------------------

And other minor fixes and documentation updates.

1.7.2.3

Git v1.7.2.3 Release Notes ==========================

Fixes since v1.7.2.2 --------------------

1.7.2.4

Git v1.7.2.4 Release Notes ==========================

This is primarily to backport support for the new "add.ignoreErrors" name given to the existing "add.ignore-errors" configuration variable.

The next version, Git 1.7.4, and future versions, will support both old and incorrect name and the new corrected name, but without this backport, users who want to use the new name "add.ignoreErrors" in their repositories cannot use older versions of Git.

1.7.2.5

Git v1.7.2.5 Release Notes ==========================

Fixes since v1.7.2.4 --------------------

1.7.2

Git v1.7.2 Release Notes ========================

Updates since v1.7.1 --------------------

Fixes since v1.7.1 ------------------

All of the fixes in v1.7.1.X maintenance series are included in this release, unless otherwise noted.

1.7.3.1

Git v1.7.3.1 Release Notes ==========================

Fixes since v1.7.3 ------------------

And other minor fixes and documentation updates.

1.7.3.2

Git v1.7.3.2 Release Notes ==========================

This is primarily to push out many documentation fixes accumulated since the 1.7.3.1 release.

1.7.3.3

Git v1.7.3.3 Release Notes ==========================

In addition to the usual fixes, this release also includes support for the new "add.ignoreErrors" name given to the existing "add.ignore-errors" configuration variable.

The next version, Git 1.7.4, and future versions, will support both old and incorrect name and the new corrected name, but without this backport, users who want to use the new name "add.ignoreErrors" in their repositories cannot use older versions of Git.

Fixes since v1.7.3.2 --------------------

Other minor fixes and documentation updates are also included.

1.7.3.4

Git v1.7.3.4 Release Notes ==========================

Fixes since v1.7.3.3 --------------------

Other minor fixes and documentation updates are also included.

1.7.3.5

Git 1.7.3.5 Release Notes =========================

1.7.3

Git v1.7.3 Release Notes ========================

Updates since v1.7.2 --------------------

Also contains various documentation updates.

Fixes since v1.7.2 ------------------

All of the fixes in v1.7.2.X maintenance series are included in this release, unless otherwise noted.

1.7.4.1

Git v1.7.4.1 Release Notes ==========================

Fixes since v1.7.4 ------------------

And other minor fixes and documentation updates.

1.7.4.2

Git v1.7.4.2 Release Notes ==========================

Fixes since v1.7.4.1 --------------------

And other minor fixes and documentation updates.

1.7.4.3

Git v1.7.4.3 Release Notes ==========================

Fixes since v1.7.4.2 --------------------

And other minor fixes and documentation updates.

1.7.4.4

Git v1.7.4.4 Release Notes ==========================

Fixes since v1.7.4.3 --------------------

And other minor fixes and documentation updates.

1.7.4.5

Git v1.7.4.5 Release Notes ==========================

This contains only minor documentation fixes accumulated since 1.7.4.4.

1.7.4

Git v1.7.4 Release Notes ========================

Updates since v1.7.3 --------------------

Also contains various documentation updates.

Fixes since v1.7.3 ------------------

All of the fixes in the v1.7.3.X maintenance series are included in this release, unless otherwise noted.

1.7.5.1

Git v1.7.5.1 Release Notes ==========================

Fixes since v1.7.5 ------------------

And other minor fixes and documentation updates.

1.7.5.2

Git v1.7.5.2 Release Notes ==========================

The release notes to 1.7.5.1 forgot to mention:

Fixes since v1.7.5.1 --------------------

And other minor fixes and documentation updates.

1.7.5.3

Git v1.7.5.3 Release Notes ==========================

Fixes since v1.7.5.2 --------------------

And other minor fixes and documentation updates.

1.7.5.4

Git v1.7.5.4 Release Notes ==========================

Fixes since v1.7.5.3 --------------------

And other minor fixes and documentation updates.

1.7.5

Git v1.7.5 Release Notes ========================

Updates since v1.7.4 --------------------

Also contains various documentation updates.

Fixes since v1.7.4 ------------------

All of the fixes in the v1.7.4.X maintenance series are included in this release, unless otherwise noted.

1.7.6.1

Git v1.7.6.1 Release Notes ==========================

Fixes since v1.7.6 ------------------

1.7.6.2

Git v1.7.6.2 Release Notes ==========================

Fixes since v1.7.6.1 --------------------

1.7.6.3

Git v1.7.6.3 Release Notes ==========================

Fixes since v1.7.6.2 --------------------

Also contains minor fixes and documentation updates.

1.7.6.4

Git v1.7.6.4 Release Notes ==========================

Fixes since v1.7.6.3 --------------------

Also contains minor fixes and documentation updates.

1.7.6.5

Git v1.7.6.5 Release Notes ==========================

Fixes since v1.7.6.4 --------------------

Also contains minor fixes and documentation updates.

1.7.6.6

Git v1.7.6.6 Release Notes ==========================

Fixes since v1.7.6.5 --------------------

Also contains minor fixes and documentation updates.

1.7.6

Git v1.7.6 Release Notes ========================

Updates since v1.7.5 --------------------

After "git reset --hard; edit Makefile; cd t/", "git add -u" would
be a no-op, but "git add -u :/" would add the updated contents of
the Makefile at the top level. If you want to name a path in the
current subdirectory whose unusual name begins with ":/", you can
name it by "./:/that/path" or by "\:/that/path".

Also contains various documentation updates and minor miscellaneous changes.

Fixes since v1.7.5 ------------------

Unless otherwise noted, all the fixes in 1.7.5.X maintenance track are included in this release.

1.7.7.1

Git v1.7.7.1 Release Notes ==========================

Fixes since v1.7.7 ------------------

1.7.7.2

Git v1.7.7.2 Release Notes ==========================

Fixes since v1.7.7.1 --------------------

1.7.7.3

Git v1.7.7.3 Release Notes ==========================

Fixes since v1.7.7.2 --------------------

1.7.7.4

Git v1.7.7.4 Release Notes ==========================

Fixes since v1.7.7.3 --------------------

1.7.7.5

Git v1.7.7.5 Release Notes ==========================

Fixes since v1.7.7.4 --------------------

Also contains minor fixes and documentation updates.

1.7.7.6

Git v1.7.7.6 Release Notes ==========================

Fixes since v1.7.7.5 --------------------

Also contains minor fixes and documentation updates.

1.7.7.7

Git v1.7.7.7 Release Notes ==========================

Fixes since v1.7.7.6 --------------------

Also contains minor fixes and documentation updates.

1.7.7

Git v1.7.7 Release Notes ========================

Updates since v1.7.6 --------------------

Also contains various documentation updates and minor miscellaneous changes.

Fixes since v1.7.6 ------------------

Unless otherwise noted, all fixes in the 1.7.6.X maintenance track are included in this release.

1.7.8.1

Git v1.7.8.1 Release Notes ==========================

Fixes since v1.7.8 ------------------

Also contains minor fixes and documentation updates.

1.7.8.2

Git v1.7.8.2 Release Notes ==========================

Fixes since v1.7.8.1 --------------------

Also contains minor fixes and documentation updates.

1.7.8.3

Git v1.7.8.3 Release Notes ==========================

Fixes since v1.7.8.2 --------------------

Also contains minor fixes and documentation updates.

1.7.8.4

Git v1.7.8.4 Release Notes ==========================

Fixes since v1.7.8.3 --------------------

Also contains minor fixes and documentation updates.

1.7.8.5

Git v1.7.8.5 Release Notes ==========================

Fixes since v1.7.8.4 --------------------

Also contains minor fixes and documentation updates.

1.7.8.6

Git v1.7.8.6 Release Notes ==========================

Fixes since v1.7.8.5 --------------------

Also contains minor fixes and documentation updates.

1.7.8

Git v1.7.8 Release Notes ========================

Updates since v1.7.7 --------------------

Also contains other documentation updates and minor code cleanups.

Fixes since v1.7.7 ------------------

Unless otherwise noted, all fixes in the 1.7.7.X maintenance track are included in this release.

" "git push" on the receiving end used to call post-receive and post-update
  hooks for attempted removal of non-existing refs.
  (merge 160b81ed ph/push-to-delete-nothing later to maint).

1.7.9.1

Git v1.7.9.1 Release Notes ==========================

Fixes since v1.7.9 ------------------

Also contains minor fixes and documentation updates.

1.7.9.2

Git v1.7.9.2 Release Notes ==========================

Fixes since v1.7.9.1 --------------------

Also contains minor fixes and documentation updates.

1.7.9.3

Git v1.7.9.3 Release Notes ==========================

Fixes since v1.7.9.2 --------------------

Also contains minor fixes and documentation updates.

1.7.9.4

Git v1.7.9.4 Release Notes ==========================

Fixes since v1.7.9.3 --------------------

Also contains minor fixes and documentation updates.

1.7.9.5

Git v1.7.9.5 Release Notes ==========================

Fixes since v1.7.9.4 --------------------

Also contains minor fixes and documentation updates.

1.7.9.6

Git v1.7.9.6 Release Notes ==========================

Fixes since v1.7.9.5 --------------------

Also contains minor fixes and documentation updates.

1.7.9.7

Git v1.7.9.7 Release Notes ==========================

Fixes since v1.7.9.6 --------------------

Also contains minor fixes and documentation updates.

1.7.9

Git v1.7.9 Release Notes ========================

Updates since v1.7.8 --------------------

Also contains minor documentation updates and code clean-ups.

Fixes since v1.7.8 ------------------

Unless otherwise noted, all the fixes since v1.7.8 in the maintenance releases are contained in this release (see release notes to them for details).

1.8.0.1

Git v1.8.0.1 Release Notes ==========================

Fixes since v1.8.0 ------------------

Also contains other minor fixes and documentation updates.

1.8.0.2

Git v1.8.0.2 Release Notes ==========================

Fixes since v1.8.0.1 --------------------

Also contains other minor fixes and documentation updates.

1.8.0.3

Git v1.8.0.3 Release Notes ==========================

Fixes since v1.8.0.2 --------------------

Also contains many documentation updates backported from the ’master’ branch that is preparing for the upcoming 1.8.1 release.

1.8.0

Git v1.8.0 Release Notes ========================

Backward compatibility notes ----------------------------

In the next major release (not this one), we will change the behavior of the "git push" command.

When "git push [$there]" does not say what to push, we have used the traditional "matching" semantics so far (all your branches were sent to the remote as long as there already are branches of the same name over there). We will use the "simple" semantics that pushes the current branch to the branch with the same name, only when the current branch is set to integrate with that remote branch. There is a user preference configuration variable "push.default" to change this, and "git push" will warn about the upcoming change until you set this variable in this release.

"git branch --set-upstream" is deprecated and may be removed in a relatively distant future. "git branch [-u|--set-upstream-to]" has been introduced with a saner order of arguments.

Updates since v1.7.12 ---------------------

UI, Workflows & Features

Foreign Interface

Performance, Internal Implementation, etc.

Also contains minor documentation updates and code clean-ups.

Fixes since v1.7.12 -------------------

Unless otherwise noted, all the fixes since v1.7.12 in the maintenance track are contained in this release (see release notes to them for details).

1.8.1.1

Git 1.8.1.1 Release Notes =========================

Fixes since v1.8.1 ------------------

Also contains other minor fixes and documentation updates.

1.8.1.2

Git 1.8.1.2 Release Notes =========================

Fixes since v1.8.1.1 --------------------

Also contains various documentation fixes.

1.8.1.3

Git 1.8.1.3 Release Notes =========================

Fixes since v1.8.1.2 --------------------

Also contains various documentation fixes.

1.8.1.4

Git 1.8.1.4 Release Notes =========================

Fixes since v1.8.1.3 --------------------

Also contains various documentation fixes.

1.8.1.5

Git 1.8.1.5 Release Notes =========================

Fixes since v1.8.1.4 --------------------

Also contains various documentation fixes.

1.8.1.6

Git 1.8.1.6 Release Notes =========================

Fixes since v1.8.1.5 --------------------

Also contains various documentation fixes.

1.8.1

Git v1.8.1 Release Notes ========================

Backward compatibility notes ----------------------------

In the next major release (not this one), we will change the behavior of the "git push" command.

When "git push [$there]" does not say what to push, we have used the traditional "matching" semantics so far (all your branches were sent to the remote as long as there already are branches of the same name over there). We will use the "simple" semantics that pushes the current branch to the branch with the same name, only when the current branch is set to integrate with that remote branch. There is a user preference configuration variable "push.default" to change this, and "git push" will warn about the upcoming change until you set this variable in this release.

"git branch --set-upstream" is deprecated and may be removed in a relatively distant future. "git branch [-u|--set-upstream-to]" has been introduced with a saner order of arguments to replace it.

Updates since v1.8.0 --------------------

UI, Workflows & Features

Cc: Stable Kernel <stable@k.org> # for v3.2 and up

The command now strips " # for v3.2 and up" part before adding the
remainder of this line to the list of recipients.

Foreign Interface

Performance, Internal Implementation, etc.

Also contains minor documentation updates and code clean-ups.

Fixes since v1.8.0 ------------------

Unless otherwise noted, all the fixes since v1.8.0 in the maintenance track are contained in this release (see release notes to them for details).

1.8.2.1

Git v1.8.2.1 Release Notes ==========================

Fixes since v1.8.2 ------------------

1.8.2.2

Git v1.8.2.2 Release Notes ==========================

Fixes since v1.8.2.1 --------------------

1.8.2.3

Git v1.8.2.3 Release Notes ==========================

Fixes since v1.8.2.2 --------------------

Also contains a handful of trivial code clean-ups, documentation updates, updates to the test suite, etc.

1.8.2

Git v1.8.2 Release Notes ========================

Backward compatibility notes (this release) -------------------------------------------

"git push $there tag v1.2.3" used to allow replacing a tag v1.2.3 that already exists in the repository $there, if the rewritten tag you are pushing points at a commit that is a descendant of a commit that the old tag v1.2.3 points at. This was found to be error prone and starting with this release, any attempt to update an existing ref under refs/tags/ hierarchy will fail, without "--force".

When "git add -u" and "git add -A" that does not specify what paths to add on the command line is run from inside a subdirectory, the scope of the operation has always been limited to the subdirectory. Many users found this counter-intuitive, given that "git commit -a" and other commands operate on the entire tree regardless of where you are. In this release, these commands give a warning message that suggests the users to use "git add -u/-A ." when they want to limit the scope to the current directory; doing so will squelch the message, while training their fingers.

Backward compatibility notes (for Git 2.0) ------------------------------------------

When "git push [$there]" does not say what to push, we have used the traditional "matching" semantics so far (all your branches were sent to the remote as long as there already are branches of the same name over there). In Git 2.0, the default will change to the "simple" semantics that pushes the current branch to the branch with the same name, only when the current branch is set to integrate with that remote branch. There is a user preference configuration variable "push.default" to change this. If you are an old-timer who is used to the "matching" semantics, you can set it to "matching" to keep the traditional behaviour. If you want to live in the future early, you can set it to "simple" today without waiting for Git 2.0.

When "git add -u" and "git add -A", that does not specify what paths to add on the command line is run from inside a subdirectory, these commands will operate on the entire tree in Git 2.0 for consistency with "git commit -a" and other commands. Because there will be no mechanism to make "git add -u" behave as if "git add -u .", it is important for those who are used to "git add -u" (without pathspec) updating the index only for paths in the current subdirectory to start training their fingers to explicitly say "git add -u ." when they mean it before Git 2.0 comes.

Updates since v1.8.1 --------------------

UI, Workflows & Features

Foreign Interface

Performance, Internal Implementation, etc.

Also contains minor documentation updates and code clean-ups.

Fixes since v1.8.1 ------------------

Unless otherwise noted, all the fixes since v1.8.1 in the maintenance track are contained in this release (see release notes to them for details).

1.8.3.1

Git v1.8.3.1 Release Notes ==========================

Fixes since v1.8.3 ------------------

Also contains a handful of trivial code clean-ups, documentation updates, updates to the test suite, etc.

1.8.3.2

Git v1.8.3.2 Release Notes ==========================

Fixes since v1.8.3.1 --------------------

1.8.3.3

Git v1.8.3.3 Release Notes ==========================

Fixes since v1.8.3.2 --------------------

Also contains various minor documentation updates.

1.8.3.4

Git v1.8.3.4 Release Notes ==========================

This update is mostly to propagate documentation fixes and test updates from the master front back to the maintenance track.

Fixes since v1.8.3.3 --------------------

1.8.3

Git v1.8.3 Release Notes ========================

Backward compatibility notes (for Git 2.0) ------------------------------------------

When "git push [$there]" does not say what to push, we have used the traditional "matching" semantics so far (all your branches were sent to the remote as long as there already are branches of the same name over there). In Git 2.0, the default will change to the "simple" semantics that pushes only the current branch to the branch with the same name, and only when the current branch is set to integrate with that remote branch. Use the user preference configuration variable "push.default" to change this. If you are an old-timer who is used to the "matching" semantics, you can set the variable to "matching" to keep the traditional behaviour. If you want to live in the future early, you can set it to "simple" today without waiting for Git 2.0.

When "git add -u" (and "git add -A") is run inside a subdirectory and does not specify which paths to add on the command line, it will operate on the entire tree in Git 2.0 for consistency with "git commit -a" and other commands. There will be no mechanism to make plain "git add -u" behave like "git add -u .". Current users of "git add -u" (without a pathspec) should start training their fingers to explicitly say "git add -u ." before Git 2.0 comes. A warning is issued when these commands are run without a pathspec and when you have local changes outside the current directory, because the behaviour in Git 2.0 will be different from today’s version in such a situation.

In Git 2.0, "git add <path>" will behave as "git add -A <path>", so that "git add dir/" will notice paths you removed from the directory and record the removal. Versions before Git 2.0, including this release, will keep ignoring removals, but the users who rely on this behaviour are encouraged to start using "git add --ignore-removal <path>" now before 2.0 is released.

Updates since v1.8.2 --------------------

Foreign interface

UI, Workflows & Features

Performance, Internal Implementation, etc.

Also contains various documentation updates and code clean-ups.

Fixes since v1.8.2 ------------------

Unless otherwise noted, all the fixes since v1.8.2 in the maintenance track are contained in this release (see release notes to them for details).

1.8.4.1

Git v1.8.4.1 Release Notes ==========================

Fixes since v1.8.4 ------------------

Also contains a handful of trivial code clean-ups, documentation updates, updates to the test suite, etc.

1.8.4.2

Git v1.8.4.2 Release Notes ==========================

Fixes since v1.8.4.1 --------------------

Also contains a handful of trivial code clean-ups, documentation updates, updates to the test suite, etc.

1.8.4.3

Git v1.8.4.3 Release Notes ==========================

Fixes since v1.8.4.2 --------------------

Also contains a handful of trivial code clean-ups, documentation updates, updates to the test suite, etc.

1.8.4.4

Git v1.8.4.4 Release Notes ==========================

Fixes since v1.8.4.3 --------------------

1.8.4.5

Git v1.8.4.5 Release Notes ==========================

Fixes since v1.8.4.4 --------------------

1.8.4

Git v1.8.4 Release Notes ========================

Backward compatibility notes (for Git 2.0) ------------------------------------------

When "git push [$there]" does not say what to push, we have used the traditional "matching" semantics so far (all your branches were sent to the remote as long as there already are branches of the same name over there). In Git 2.0, the default will change to the "simple" semantics that pushes:

Use the user preference configuration variable "push.default" to change this. If you are an old-timer who is used to the "matching" semantics, you can set the variable to "matching" to keep the traditional behaviour. If you want to live in the future early, you can set it to "simple" today without waiting for Git 2.0.

When "git add -u" (and "git add -A") is run inside a subdirectory and does not specify which paths to add on the command line, it will operate on the entire tree in Git 2.0 for consistency with "git commit -a" and other commands. There will be no mechanism to make plain "git add -u" behave like "git add -u .". Current users of "git add -u" (without a pathspec) should start training their fingers to explicitly say "git add -u ." before Git 2.0 comes. A warning is issued when these commands are run without a pathspec and when you have local changes outside the current directory, because the behaviour in Git 2.0 will be different from today’s version in such a situation.

In Git 2.0, "git add <path>" will behave as "git add -A <path>", so that "git add dir/" will notice paths you removed from the directory and record the removal. Versions before Git 2.0, including this release, will keep ignoring removals, but the users who rely on this behaviour are encouraged to start using "git add --ignore-removal <path>" now before 2.0 is released.

Updates since v1.8.3 --------------------

Foreign interfaces, subsystems and ports.

UI, Workflows & Features

This is a backward incompatible change and might cause breakages to
people's existing scripts.

Performance, Internal Implementation, etc.

Also contains various documentation updates and code clean-ups.

Fixes since v1.8.3 ------------------

Unless otherwise noted, all the fixes since v1.8.3 in the maintenance track are contained in this release (see release notes to them for details).

1.8.5.1

Git v1.8.5.1 Release Notes ==========================

Fixes since v1.8.5 ------------------

1.8.5.2

Git v1.8.5.2 Release Notes ==========================

Fixes since v1.8.5.1 --------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

1.8.5.3

Git v1.8.5.3 Release Notes ==========================

Fixes since v1.8.5.2 --------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

1.8.5.4

Git v1.8.5.4 Release Notes ==========================

Fixes since v1.8.5.3 --------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

1.8.5.5

Git v1.8.5.5 Release Notes ==========================

Fixes since v1.8.5.4 --------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

1.8.5.6

Git v1.8.5.6 Release Notes ==========================

Fixes since v1.8.5.5 --------------------

A big "thanks!" for bringing this issue to us goes to our friends in the Mercurial land, namely, Matt Mackall and Augie Fackler.

Also contains typofixes, documentation updates and trivial code clean-ups.

1.8.5

Git v1.8.5 Release Notes ========================

Backward compatibility notes (for Git 2.0) ------------------------------------------

When "git push [$there]" does not say what to push, we have used the traditional "matching" semantics so far (all your branches were sent to the remote as long as there already are branches of the same name over there). In Git 2.0, the default will change to the "simple" semantics, which pushes:

Use the user preference configuration variable "push.default" to change this. If you are an old-timer who is used to the "matching" semantics, you can set the variable to "matching" to keep the traditional behaviour. If you want to live in the future early, you can set it to "simple" today without waiting for Git 2.0.

When "git add -u" (and "git add -A") is run inside a subdirectory and does not specify which paths to add on the command line, it will operate on the entire tree in Git 2.0 for consistency with "git commit -a" and other commands. There will be no mechanism to make plain "git add -u" behave like "git add -u .". Current users of "git add -u" (without a pathspec) should start training their fingers to explicitly say "git add -u ." before Git 2.0 comes. A warning is issued when these commands are run without a pathspec and when you have local changes outside the current directory, because the behaviour in Git 2.0 will be different from today’s version in such a situation.

In Git 2.0, "git add <path>" will behave as "git add -A <path>", so that "git add dir/" will notice paths you removed from the directory and record the removal. Versions before Git 2.0, including this release, will keep ignoring removals, but the users who rely on this behaviour are encouraged to start using "git add --ignore-removal <path>" now before 2.0 is released.

The default prefix for "git svn" will change in Git 2.0. For a long time, "git svn" created its remote-tracking branches directly under refs/remotes, but it will place them under refs/remotes/origin/ unless it is told otherwise with its --prefix option.

Updates since v1.8.4 --------------------

Foreign interfaces, subsystems and ports.

UI, Workflows & Features

[http]
    sslVerify = true
[http "https://weak.example.com/"]
    sslVerify = false

would flip http.sslVerify off only when talking to that specific
site.

Performance, Internal Implementation, etc.

Also contains various documentation updates and code clean-ups.

Fixes since v1.8.4 ------------------

Unless otherwise noted, all the fixes since v1.8.4 in the maintenance track are contained in this release (see the maintenance releases’ notes for details).

1.9.0

Git v1.9.0 Release Notes ========================

Backward compatibility notes ----------------------------

"git submodule foreach $cmd $args" used to treat "$cmd $args" the same way "ssh" did, concatenating them into a single string and letting the shell unquote. Careless users who forget to sufficiently quote $args get their argument split at $IFS whitespaces by the shell, and got unexpected results due to this. Starting from this release, the command line is passed directly to the shell, if it has an argument.

Read-only support for experimental loose-object format, in which users could optionally choose to write their loose objects for a short while between v1.4.3 and v1.5.3 era, has been dropped.

The meanings of the "--tags" option to "git fetch" has changed; the command fetches tags in addition to what is fetched by the same command line without the option.

The way "git push $there $what" interprets the $what part given on the command line, when it does not have a colon that explicitly tells us what ref at the $there repository is to be updated, has been enhanced.

A handful of ancient commands that have long been deprecated are finally gone (repo-config, tar-tree, lost-found, and peek-remote).

Backward compatibility notes (for Git 2.0.0) --------------------------------------------

When "git push [$there]" does not say what to push, we have used the traditional "matching" semantics so far (all your branches were sent to the remote as long as there already are branches of the same name over there). In Git 2.0, the default will change to the "simple" semantics, which pushes:

Use the user preference configuration variable "push.default" to change this. If you are an old-timer who is used to the "matching" semantics, you can set the variable to "matching" to keep the traditional behaviour. If you want to live in the future early, you can set it to "simple" today without waiting for Git 2.0.

When "git add -u" (and "git add -A") is run inside a subdirectory and does not specify which paths to add on the command line, it will operate on the entire tree in Git 2.0 for consistency with "git commit -a" and other commands. There will be no mechanism to make plain "git add -u" behave like "git add -u .". Current users of "git add -u" (without a pathspec) should start training their fingers to explicitly say "git add -u ." before Git 2.0 comes. A warning is issued when these commands are run without a pathspec and when you have local changes outside the current directory, because the behaviour in Git 2.0 will be different from today’s version in such a situation.

In Git 2.0, "git add <path>" will behave as "git add -A <path>", so that "git add dir/" will notice paths you removed from the directory and record the removal. Versions before Git 2.0, including this release, will keep ignoring removals, but the users who rely on this behaviour are encouraged to start using "git add --ignore-removal <path>" now before 2.0 is released.

The default prefix for "git svn" will change in Git 2.0. For a long time, "git svn" created its remote-tracking branches directly under refs/remotes, but it will place them under refs/remotes/origin/ unless it is told otherwise with its --prefix option.

Updates since v1.8.5 --------------------

Foreign interfaces, subsystems and ports.

UI, Workflows & Features

[remote "origin"]
   push = refs/heads/*:refs/review/*

that would cause "git push origin" to push out our local branches
to corresponding refs under refs/review/ hierarchy at 'origin',
"git push origin master" would update 'refs/review/master' over
there.  Alternatively, if push.default is set to 'upstream' and our
'master' is set to integrate with 'topic' from the 'origin' branch,
running "git push origin" while on our 'master' would update their
'topic' branch, and running "git push origin master" while on any
of our branches does the same.

Performance, Internal Implementation, etc.

Also contains various documentation updates and code clean-ups.

Fixes since v1.8.5 ------------------

Unless otherwise noted, all the fixes since v1.8.5 in the maintenance track are contained in this release (see the maintenance releases’ notes for details).

1.9.1

Git v1.9.1 Release Notes ========================

Fixes since v1.9.0 ------------------

1.9.2

Git v1.9.2 Release Notes ========================

Fixes since v1.9.1 ------------------

Note that such a configuration is inherently unsafe (think what
should happen when "refs/heads/fr/otz" does appear on the origin
site), but that is not a reason not to be extra careful.

1.9.3

Git v1.9.3 Release Notes ========================

Fixes since v1.9.2 ------------------

1.9.4

Git v1.9.4 Release Notes ========================

Fixes since v1.9.3 ------------------

1.9.5

Git v1.9.5 Release Notes ========================

Fixes since v1.9.4 ------------------

A big "thanks!" for bringing this issue to us goes to our friends in the Mercurial land, namely, Matt Mackall and Augie Fackler.

Also contains typofixes, documentation updates and trivial code clean-ups.

2.0.0

Git v2.0 Release Notes ======================

Backward compatibility notes ----------------------------

When "git push [$there]" does not say what to push, we have used the traditional "matching" semantics so far (all your branches were sent to the remote as long as there already are branches of the same name over there). In Git 2.0, the default is now the "simple" semantics, which pushes:

You can use the configuration variable "push.default" to change this. If you are an old-timer who wants to keep using the "matching" semantics, you can set the variable to "matching", for example. Read the documentation for other possibilities.

When "git add -u" and "git add -A" are run inside a subdirectory without specifying which paths to add on the command line, they operate on the entire tree for consistency with "git commit -a" and other commands (these commands used to operate only on the current subdirectory). Say "git add -u ." or "git add -A ." if you want to limit the operation to the current directory.

"git add <path>" is the same as "git add -A <path>" now, so that "git add dir/" will notice paths you removed from the directory and record the removal. In older versions of Git, "git add <path>" used to ignore removals. You can say "git add --ignore-removal <path>" to add only added or modified paths in <path>, if you really want to.

The "-q" option to "git diff-files", which does NOT mean "quiet", has been removed (it told Git to ignore deletion, which you can do with "git diff-files --diff-filter=d").

"git request-pull" lost a few "heuristics" that often led to mistakes.

The default prefix for "git svn" has changed in Git 2.0. For a long time, "git svn" created its remote-tracking branches directly under refs/remotes, but it now places them under refs/remotes/origin/ unless it is told otherwise with its "--prefix" option.

Updates since v1.9 series -------------------------

UI, Workflows & Features

Performance, Internal Implementation, etc.

Also contains various documentation updates and code clean-ups. Many of them came from flurry of activities as GSoC candidate microproject exercises.

Fixes since v1.9 series -----------------------

Unless otherwise noted, all the fixes since v1.9 in the maintenance track are contained in this release (see the maintenance releases’ notes for details).

Note that such a configuration is inherently unsafe (think what
should happen when "refs/heads/fr/otz" does appear on the origin
site), but that is not a reason not to be extra careful.
(merge e6f6371 cn/fetch-prune-overlapping-destination later to maint).

2.0.1

Git v2.0.1 Release Notes ========================

2.0.2

Git v2.0.2 Release Notes ========================

2.0.3

Git v2.0.3 Release Notes ========================

Also a lot of fixes to the tests and some updates to the docs are included.

2.0.4

Git v2.0.4 Release Notes ========================

2.0.5

Git v2.0.5 Release Notes ========================

Fixes since v2.0.4 ------------------

A big "thanks!" for bringing this issue to us goes to our friends in the Mercurial land, namely, Matt Mackall and Augie Fackler.

Also contains typofixes, documentation updates and trivial code clean-ups.

2.1.0

Git v2.1 Release Notes ======================

Backward compatibility notes ----------------------------

$ git config core.pager "less -S"

to restore the traditional behaviour.  It is expected that people
find output from most subcommands easier to read with the new
default, except for "blame" which tends to produce really long
lines.  To override the new default only for "git blame", you can
do this:

$ git config pager.blame "less -S"

Updates since v2.0 ------------------

UI, Workflows & Features

Strictly speaking, this is a backward incompatible change and
users need to explicitly set the variable to 'true' if they want
to be prompted to confirm running the tool on each path.

Performance, Internal Implementation, etc.

Also contains various documentation updates and code clean-ups.

Fixes since v2.0 ----------------

Unless otherwise noted, all the fixes since v2.0 in the maintenance track are contained in this release (see the maintenance releases’ notes for details).

2.1.1

Git v2.1.1 Release Notes ========================

2.1.2

Git v2.1.2 Release Notes ========================

2.1.3

Git v2.1.3 Release Notes ========================

Also contains some documentation updates.

2.1.4

Git v2.1.4 Release Notes ========================

Fixes since v2.1.3 ------------------

A big "thanks!" for bringing this issue to us goes to our friends in the Mercurial land, namely, Matt Mackall and Augie Fackler.

Also contains typofixes, documentation updates and trivial code clean-ups.

2.10.0

Git 2.10 Release Notes ======================

Backward compatibility notes ----------------------------

Updates since v2.9 ------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

This change could be seen as a regression for those who do need to
specify -lrt, as they now specifically ask for NEEDS_LIBRT when
building. Hopefully they are in the minority these days.

Also contains various documentation updates and code clean-ups.

Fixes since v2.9 ----------------

Unless otherwise noted, all the fixes since v2.8 in the maintenance track are contained in this release (see the maintenance releases’ notes for details).

2.10.1

Git v2.10.1 Release Notes =========================

Fixes since v2.10 -----------------

Also contains minor documentation updates and code clean-ups.

2.10.2

Git v2.10.2 Release Notes =========================

Fixes since v2.10.1 -------------------

Also contains minor documentation updates and code clean-ups.

2.10.3

Git v2.10.3 Release Notes =========================

Fixes since v2.10.2 -------------------

Also contains minor documentation updates and code clean-ups.

2.10.4

Git v2.10.4 Release Notes =========================

This release forward-ports the fix for "ssh://…" URL from Git v2.7.6

2.10.5

Git v2.10.5 Release Notes =========================

Fixes since v2.10.4 -------------------

Credits go to joernchen <joernchen@phenoelit.de> for finding the unsafe constructs in "git cvsserver", and to Jeff King at GitHub for finding and fixing instances of the same issue in other scripts.

2.11.0

Git 2.11 Release Notes ======================

Backward compatibility notes.

The hope is that existing users will not mind this change, and
eventually the warning can be turned into a hard error, upgrading
the deprecation into removal of this (mis)feature.

Updates since v2.10 -------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Also contains various documentation updates and code clean-ups.

Fixes since v2.10 -----------------

Unless otherwise noted, all the fixes since v2.9 in the maintenance track are contained in this release (see the maintenance releases’ notes for details).

2.11.1

Git v2.11.1 Release Notes =========================

Fixes since v2.11 -----------------

Also contains various documentation updates and code clean-ups.

2.11.2

Git v2.11.2 Release Notes =========================

Fixes since v2.11.1 -------------------

2.11.3

Git v2.11.3 Release Notes =========================

This release forward-ports the fix for "ssh://…" URL from Git v2.7.6

2.11.4

Git v2.11.4 Release Notes =========================

Fixes since v2.11.3 -------------------

Credits go to joernchen <joernchen@phenoelit.de> for finding the unsafe constructs in "git cvsserver", and to Jeff King at GitHub for finding and fixing instances of the same issue in other scripts.

2.12.0

Git 2.12 Release Notes ======================

Backward compatibility notes.

Updates since v2.11 -------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Also contains various documentation updates and code clean-ups.

Fixes since v2.10 -----------------

Unless otherwise noted, all the fixes since v2.9 in the maintenance track are contained in this release (see the maintenance releases’ notes for details).

2.12.1

Git v2.12.1 Release Notes =========================

Fixes since v2.12 -----------------

Also contains various documentation updates and code clean-ups.

2.12.2

Git v2.12.2 Release Notes =========================

Fixes since v2.12.1 -------------------

Also contains various documentation updates and code clean-ups.

2.12.3

Git v2.12.3 Release Notes =========================

Fixes since v2.12.2 -------------------

Also contains various documentation updates and code clean-ups.

2.12.4

Git v2.12.4 Release Notes =========================

This release forward-ports the fix for "ssh://…" URL from Git v2.7.6

2.12.5

Git v2.12.5 Release Notes =========================

Fixes since v2.12.4 -------------------

Credits go to joernchen <joernchen@phenoelit.de> for finding the unsafe constructs in "git cvsserver", and to Jeff King at GitHub for finding and fixing instances of the same issue in other scripts.

2.13.0

Git 2.13 Release Notes ======================

Backward compatibility notes.

Updates since v2.12 -------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Also contains various documentation updates and code clean-ups.

Fixes since v2.12 -----------------

Unless otherwise noted, all the fixes since v2.12 in the maintenance track are contained in this release (see the maintenance releases’ notes for details).

2.13.1

Git v2.13.1 Release Notes =========================

Fixes since v2.13 -----------------

Also contains various documentation updates and code clean-ups.

2.13.2

Git v2.13.2 Release Notes =========================

Fixes since v2.13.1 -------------------

Also contains various documentation updates and code clean-ups.

2.13.3

Git v2.13.3 Release Notes =========================

Fixes since v2.13.2 -------------------

Also contains various documentation updates and code clean-ups.

2.13.4

Git v2.13.4 Release Notes =========================

Fixes since v2.13.3 -------------------

Also contains a handful of small code and documentation clean-ups.

2.13.5

Git v2.13.5 Release Notes =========================

This release forward-ports the fix for "ssh://…" URL from Git v2.7.6

2.13.6

Git v2.13.6 Release Notes =========================

Fixes since v2.13.5 -------------------

Credits go to joernchen <joernchen@phenoelit.de> for finding the unsafe constructs in "git cvsserver", and to Jeff King at GitHub for finding and fixing instances of the same issue in other scripts.

2.13.7

Git v2.13.7 Release Notes =========================

Fixes since v2.13.6 -------------------

Credit for finding this vulnerability and the proof of concept from
which the test script was adapted goes to Etienne Stalmans.

Credit for fixing for these bugs goes to Jeff King, Johannes Schindelin and others.

2.14.0

Git 2.14 Release Notes ======================

Backward compatibility notes and other notable changes.

Updates since v2.13 -------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

The exact errors we need to ignore are ENOENT (obviously) and
ENOTDIR (less obvious).  Instead of repeating comparison of errno
with these two constants, introduce a helper function to do so.

Also contains various documentation updates and code clean-ups.

Fixes since v2.13 -----------------

Unless otherwise noted, all the fixes since v2.13 in the maintenance track are contained in this release (see the maintenance releases’ notes for details).

2.14.1

Git v2.14.1 Release Notes =========================

This release forward-ports the fix for "ssh://…" URL from Git v2.7.6

2.14.2

Git v2.14.2 Release Notes =========================

Fixes since v2.14.1 -------------------

Also contains various documentation updates and code clean-ups.

Credits go to joernchen <joernchen@phenoelit.de> for finding the unsafe constructs in "git cvsserver", and to Jeff King at GitHub for finding and fixing instances of the same issue in other scripts.

2.14.3

Git v2.14.3 Release Notes =========================

Fixes since v2.14.2 -------------------

Also contains various documentation updates and code clean-ups.

2.14.4

Git v2.14.4 Release Notes =========================

This release is to forward-port the fixes made in the v2.13.7 version of Git. See its release notes for details.

2.14.5

Git v2.14.5 Release Notes =========================

This release is to address the recently reported CVE-2018-17456.

Fixes since v2.14.4 -------------------

Credit for finding and fixing this vulnerability goes to joernchen and Jeff King, respectively.

2.14.6

Git v2.14.6 Release Notes =========================

This release addresses the security issues CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, and CVE-2019-1387.

Fixes since v2.14.5 -------------------

Credit for finding these vulnerabilities goes to Microsoft Security Response Center, in particular to Nicolas Joly. The fast-import fixes were provided by Jeff King, the other fixes by Johannes Schindelin with help from Garima Singh.

2.15.0

Git 2.15 Release Notes ======================

Backward compatibility notes and other notable changes.

Updates since v2.14 -------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Also contains various documentation updates and code clean-ups.

Fixes since v2.14 -----------------

2.15.1

Git v2.15.1 Release Notes =========================

Fixes since v2.15 -----------------

Also contains various documentation updates and code clean-ups.

2.15.2

Git v2.15.2 Release Notes =========================

Fixes since v2.15.1 -------------------

Also contains various documentation updates and code clean-ups.

2.15.3

Git v2.15.3 Release Notes =========================

This release merges up the fixes that appear in v2.14.5 to address the recently reported CVE-2018-17456; see the release notes for that version for details.

2.15.4

Git v2.15.4 Release Notes =========================

This release merges up the fixes that appear in v2.14.6 to address the security issues CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, and CVE-2019-1387; see the release notes for that version for details.

In conjunction with a vulnerability that was fixed in v2.20.2, .gitmodules is no longer allowed to contain entries of the form submodule.<name>.update=!command.

2.16.0

Git 2.16 Release Notes ======================

Backward compatibility notes and other notable changes.

Updates since v2.15 -------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Also contains various documentation updates and code clean-ups.

Fixes since v2.15 -----------------

2.16.1

Git v2.16.1 Release Notes =========================

Fixes since v2.16 -----------------

Does not contain any other documentation updates or code clean-ups.

2.16.2

Git v2.16.2 Release Notes =========================

Fixes since v2.16.1 -------------------

Also contains various documentation updates and code clean-ups.

2.16.3

Git v2.16.3 Release Notes =========================

Fixes since v2.16.2 -------------------

Also contains various documentation updates and code clean-ups.

2.16.4

Git v2.16.4 Release Notes =========================

This release is to forward-port the fixes made in the v2.13.7 version of Git. See its release notes for details.

2.16.5

Git v2.16.5 Release Notes =========================

This release merges up the fixes that appear in v2.14.5 to address the recently reported CVE-2018-17456; see the release notes for that version for details.

2.16.6

Git v2.16.6 Release Notes =========================

This release merges up the fixes that appear in v2.14.6 and in v2.15.4 addressing the security issues CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, and CVE-2019-1387; see the release notes for those versions for details.

2.17.0

Git 2.17 Release Notes ======================

Updates since v2.16 -------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Also contains various documentation updates and code clean-ups.

Fixes since v2.16 -----------------

2.17.1

Git v2.17.1 Release Notes =========================

Fixes since v2.17 -----------------

2.17.2

Git v2.17.2 Release Notes =========================

This release merges up the fixes that appear in v2.14.5 to address the recently reported CVE-2018-17456; see the release notes for that version for details.

In addition, this release also teaches "fsck" and the server side logic to reject pushes to repositories that attempt to create such a problematic ".gitmodules" file as tracked contents, to help hosting sites protect their customers by preventing malicious contents from spreading.

2.17.3

Git v2.17.3 Release Notes =========================

This release merges up the fixes that appear in v2.14.6 and in v2.15.4 addressing the security issues CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, and CVE-2019-1387; see the release notes for those versions for details.

In addition, git fsck was taught to identify .gitmodules entries of the form submodule.<name>.update=!command, which have been disallowed in v2.15.4.

2.17.4

Git v2.17.4 Release Notes =========================

This release is to address the security issue: CVE-2020-5260

Fixes since v2.17.3 -------------------

Credit for finding the vulnerability goes to Felix Wilhelm of Google Project Zero.

2.17.5

Git v2.17.5 Release Notes =========================

This release is to address a security issue: CVE-2020-11008

Fixes since v2.17.4 -------------------

Unlike the vulnerability CVE-2020-5260 fixed in v2.17.4, the
credentials are not for a host of the attacker's choosing; instead,
they are for some unspecified host (based on how the configured
credential helper handles an absent "host" parameter).

The attack has been made impossible by refusing to work with
under-specified credential patterns.

Credit for finding the vulnerability goes to Carlo Arenas.

2.17.6

Git v2.17.6 Release Notes =========================

This release addresses the security issues CVE-2021-21300.

Fixes since v2.17.5 -------------------

Credit for finding and fixing this vulnerability goes to Matheus Tavares, helped by Johannes Schindelin.

2.18.0

Git 2.18 Release Notes ======================

Updates since v2.17 -------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Also contains various documentation updates and code clean-ups.

Fixes since v2.17 -----------------

2.18.1

Git v2.18.1 Release Notes =========================

This release merges up the fixes that appear in v2.14.5 and in v2.17.2 to address the recently reported CVE-2018-17456; see the release notes for those versions for details.

2.18.2

Git v2.18.2 Release Notes =========================

This release merges up the fixes that appear in v2.14.6, v2.15.4 and in v2.17.3, addressing the security issues CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, and CVE-2019-1387; see the release notes for those versions for details.

2.18.3

Git v2.18.3 Release Notes =========================

This release merges the security fix that appears in v2.17.4; see the release notes for that version for details.

2.18.4

Git v2.18.4 Release Notes =========================

This release merges the security fix that appears in v2.17.5; see the release notes for that version for details.

2.18.5

Git v2.18.5 Release Notes =========================

This release merges up the fixes that appear in v2.17.6 to address the security issue CVE-2021-21300; see the release notes for that version for details.

2.19.0

Git 2.19 Release Notes ======================

Updates since v2.18 -------------------

UI, Workflows & Features

"git apply" learned the "--intent-to-add" option so that an
otherwise working-tree-only application of a patch will add new
paths to the index marked with the "intent-to-add" bit.

Performance, Internal Implementation, Development Support etc.

Fixes since v2.18 -----------------

2.19.1

Git v2.19.1 Release Notes =========================

This release merges up the fixes that appear in v2.14.5 and in v2.17.2 to address the recently reported CVE-2018-17456; see the release notes for those versions for details.

2.19.2

Git v2.19.2 Release Notes =========================

Fixes since v2.19.1 -------------------

Also contains various documentation updates and code clean-ups.

2.19.3

Git v2.19.3 Release Notes =========================

This release merges up the fixes that appear in v2.14.6, v2.15.4 and in v2.17.3, addressing the security issues CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, and CVE-2019-1387; see the release notes for those versions for details.

2.19.4

Git v2.19.4 Release Notes =========================

This release merges the security fix that appears in v2.17.4; see the release notes for that version for details.

2.19.5

Git v2.19.5 Release Notes =========================

This release merges the security fix that appears in v2.17.5; see the release notes for that version for details.

2.19.6

Git v2.19.6 Release Notes =========================

This release merges up the fixes that appear in v2.17.6 and v2.18.5 to address the security issue CVE-2021-21300; see the release notes for these versions for details.

2.2.0

Git v2.2 Release Notes ======================

Updates since v2.1 ------------------

Ports

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Also contains various documentation updates and code clean-ups.

Fixes since v2.1 ----------------

Unless otherwise noted, all the fixes since v2.1 in the maintenance track are contained in this release (see the maintenance releases’ notes for details).

2.2.1

Git v2.2.1 Release Notes ========================

Fixes since v2.2 ----------------

A big "thanks!" for bringing this issue to us goes to our friends in the Mercurial land, namely, Matt Mackall and Augie Fackler.

Also contains typofixes, documentation updates and trivial code clean-ups.

2.2.2

Git v2.2.2 Release Notes ========================

Fixes since v2.2.1 ------------------

(1) ISO-like format is used, and
(2) the string can make sense interpreted as both y-m-d and y-d-m.

Git may still have to use the heuristics to tiebreak between dd/mm/yy
and mm/dd/yy, though.

Also contains typofixes, documentation updates and trivial code clean-ups.

2.2.3

Git v2.2.3 Release Notes ========================

Fixes since v2.2.2 ------------------

2.20.0

Git 2.20 Release Notes ======================

Backward Compatibility Notes ----------------------------

Updates since v2.19 -------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.19 -----------------

2.20.1

Git v2.20.1 Release Notes =========================

This release is primarily to fix brown-paper-bag breakages in the 2.20.0 release.

Fixes since v2.20 -----------------

2.20.2

Git v2.20.2 Release Notes =========================

This release merges up the fixes that appear in v2.14.6, v2.15.4 and in v2.17.3, addressing the security issues CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, and CVE-2019-1387; see the release notes for those versions for details.

The change to disallow submodule.<name>.update=!command entries in .gitmodules which was introduced v2.15.4 (and for which v2.17.3 added explicit fsck checks) fixes the vulnerability in v2.20.x where a recursive clone followed by a submodule update could execute code contained within the repository without the user explicitly having asked for that (CVE-2019-19604).

Credit for finding this vulnerability goes to Joern Schneeweisz, credit for the fixes goes to Jonathan Nieder.

2.20.3

Git v2.20.3 Release Notes =========================

This release merges the security fix that appears in v2.17.4; see the release notes for that version for details.

2.20.4

Git v2.20.4 Release Notes =========================

This release merges the security fix that appears in v2.17.5; see the release notes for that version for details.

2.20.5

Git v2.20.5 Release Notes =========================

This release merges up the fixes that appear in v2.17.6, v2.18.5 and v2.19.6 to address the security issue CVE-2021-21300; see the release notes for these versions for details.

2.21.0

Git 2.21 Release Notes ======================

Backward Compatibility Notes ----------------------------

Updates since v2.20 -------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.20 -----------------

2.21.1

Git v2.21.1 Release Notes =========================

This release merges up the fixes that appear in v2.14.6, v2.15.4, v2.17.3 and in v2.20.2, addressing the security issues CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, CVE-2019-1387, and CVE-2019-19604; see the release notes for those versions for details.

Additionally, this version also includes a couple of fixes for the Windows-specific quoting of command-line arguments when Git executes a Unix shell on Windows.

2.21.2

Git v2.21.2 Release Notes =========================

This release merges the security fix that appears in v2.17.4; see the release notes for that version for details.

2.21.3

Git v2.21.3 Release Notes =========================

This release merges the security fix that appears in v2.17.5; see the release notes for that version for details.

2.21.4

Git v2.21.4 Release Notes =========================

This release merges up the fixes that appear in v2.17.6, v2.18.5, v2.19.6 and v2.20.5 to address the security issue CVE-2021-21300; see the release notes for these versions for details.

2.22.0

Git 2.22 Release Notes ======================

Updates since v2.21 -------------------

Backward compatibility note

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.21 -----------------

2.22.1

Git 2.22.1 Release Notes ========================

Fixes since v2.22 -----------------

Also contains various documentation updates, code clean-ups and minor fixups.

2.22.2

Git v2.22.2 Release Notes =========================

This release merges up the fixes that appear in v2.14.6, v2.15.4, v2.17.3, v2.20.2 and in v2.21.1, addressing the security issues CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, CVE-2019-1387, and CVE-2019-19604; see the release notes for those versions for details.

2.22.3

Git v2.22.3 Release Notes =========================

This release merges the security fix that appears in v2.17.4; see the release notes for that version for details.

2.22.4

Git v2.22.4 Release Notes =========================

This release merges the security fix that appears in v2.17.5; see the release notes for that version for details.

2.22.5

Git v2.22.5 Release Notes =========================

This release merges up the fixes that appear in v2.17.6, v2.18.5, v2.19.6, v2.20.5 and v2.21.4 to address the security issue CVE-2021-21300; see the release notes for these versions for details.

2.23.0

Git 2.23 Release Notes ======================

Updates since v2.22 -------------------

Backward compatibility note

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.22 -----------------

2.23.1

Git v2.23.1 Release Notes =========================

This release merges up the fixes that appear in v2.14.6, v2.15.4, v2.17.3, v2.20.2 and in v2.21.1, addressing the security issues CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, CVE-2019-1387, and CVE-2019-19604; see the release notes for those versions for details.

2.23.2

Git v2.23.2 Release Notes =========================

This release merges the security fix that appears in v2.17.4; see the release notes for that version for details.

2.23.3

Git v2.23.3 Release Notes =========================

This release merges the security fix that appears in v2.17.5; see the release notes for that version for details.

2.23.4

Git v2.23.4 Release Notes =========================

This release merges up the fixes that appear in v2.17.6, v2.18.5, v2.19.6, v2.20.5, v2.21.4 and v2.22.5 to address the security issue CVE-2021-21300; see the release notes for these versions for details.

2.24.0

Git 2.24 Release Notes ======================

Updates since v2.23 -------------------

Backward compatibility note

UI, Workflows & Features

The command also has learned to fast-forward in more cases where it
can instead of replaying to recreate identical commits.

Performance, Internal Implementation, Development Support etc.

Fixes since v2.23 -----------------

2.24.1

Git v2.24.1 Release Notes =========================

This release merges up the fixes that appear in v2.14.6, v2.15.4, v2.17.3, v2.20.2 and in v2.21.1, addressing the security issues CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, CVE-2019-1387, and CVE-2019-19604; see the release notes for those versions for details.

2.24.2

Git v2.24.2 Release Notes =========================

This release merges the security fix that appears in v2.17.4; see the release notes for that version for details.

2.24.3

Git v2.24.3 Release Notes =========================

This release merges the security fix that appears in v2.17.5; see the release notes for that version for details.

2.24.4

Git v2.24.4 Release Notes =========================

This release merges up the fixes that appear in v2.17.6, v2.18.5, v2.19.6, v2.20.5, v2.21.4, v2.22.5 and v2.23.4 to address the security issue CVE-2021-21300; see the release notes for these versions for details.

2.25.0

Git 2.25 Release Notes ======================

Updates since v2.24 -------------------

Backward compatibility notes

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.24 -----------------

2.25.1

Git 2.25.1 Release Notes ========================

Fixes since v2.25 -----------------

Also contains various documentation updates, code clean-ups and minor fixups.

2.25.2

Git 2.25.2 Release Notes ========================

Fixes since v2.25.1 -------------------

Also contains various documentation updates, code clean-ups and minor fixups.

2.25.3

Git v2.25.3 Release Notes =========================

This release merges the security fix that appears in v2.17.4; see the release notes for that version for details.

2.25.4

Git v2.25.4 Release Notes =========================

This release merges the security fix that appears in v2.17.5; see the release notes for that version for details.

2.25.5

Git v2.25.5 Release Notes =========================

This release merges up the fixes that appear in v2.17.6, v2.18.5, v2.19.6, v2.20.5, v2.21.4, v2.22.5, v2.23.4 and v2.24.4 to address the security issue CVE-2021-21300; see the release notes for these versions for details.

2.26.0

Git 2.26 Release Notes ======================

Updates since v2.25 -------------------

Backward compatibility notes

If your workflow is negatively affected by this change, please
report it to git@vger.kernel.org so that we can take a look into
it.  After doing so, you can set the 'rebase.backend' configuration
variable to 'apply', in order to use the old default behaviour in
the meantime.

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.25 -----------------

2.26.1

Git v2.26.1 Release Notes =========================

This release merges the security fix that appears in v2.17.4; see the release notes for that version for details.

2.26.2

Git v2.26.2 Release Notes =========================

This release merges the security fix that appears in v2.17.5; see the release notes for that version for details.

2.26.3

Git v2.26.3 Release Notes =========================

This release merges up the fixes that appear in v2.17.6, v2.18.5, v2.19.6, v2.20.5, v2.21.4, v2.22.5, v2.23.4, v2.24.4 and v2.25.5 to address the security issue CVE-2021-21300; see the release notes for these versions for details.

2.27.0

Git 2.27 Release Notes ======================

Updates since v2.26 -------------------

Backward compatibility notes

Starting from this version, "git describe" will always use the
"long" version, as if the "--long" option were given, when giving
its output based on such a misplaced tag to work around the problem.

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.26 -----------------

2.27.1

Git v2.27.1 Release Notes =========================

This release merges up the fixes that appear in v2.17.6, v2.18.5, v2.19.6, v2.20.5, v2.21.4, v2.22.5, v2.23.4, v2.24.4, v2.25.5 and v2.26.3 to address the security issue CVE-2021-21300; see the release notes for these versions for details.

2.28.0

Git 2.28 Release Notes ======================

Updates since v2.27 -------------------

Backward compatibility notes

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.27 -----------------

2.28.1

Git v2.28.1 Release Notes =========================

This release merges up the fixes that appear in v2.17.6, v2.18.5, v2.19.6, v2.20.5, v2.21.4, v2.22.5, v2.23.4, v2.24.4, v2.25.5, v2.26.3 and v2.27.1 to address the security issue CVE-2021-21300; see the release notes for these versions for details.

2.29.0

Git 2.29 Release Notes ======================

Updates since v2.28 -------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.28 -----------------

The bug was discovered and reported by Joern Schneeweisz of GitLab
to the git-security mailing list. Its practical impact due to the
obscurity of git-remote-mediawiki was deemed small enough to forgo
a dedicated security release.

2.29.1

Git v2.29.1 Release Notes =========================

This is to fix the build procedure change in 2.28 where we failed to install a few programs that should be installed in /usr/bin (namely, receive-pack, upload-archive and upload-pack) when the non-default SKIP_DASHED_BUILT_INS installation option is in effect.

A minor glitch in a non-default installation may usually not deserve a hotfix, but I know Git for Windows ship binaries built with this option, so let’s make an exception.

2.29.2

Git v2.29.2 Release Notes =========================

This release is primarily to fix brown-paper-bag breakages in the 2.29.0 release.

Fixes since v2.29.1 -------------------

2.29.3

Git v2.29.3 Release Notes =========================

This release merges up the fixes that appear in v2.17.6, v2.18.5, v2.19.6, v2.20.5, v2.21.4, v2.22.5, v2.23.4, v2.24.4, v2.25.5, v2.26.3, v2.27.1 and v2.28.1 to address the security issue CVE-2021-21300; see the release notes for these versions for details.

2.3.0

Git v2.3 Release Notes ======================

This one ended up to be a release with lots of small corrections and improvements without big uncomfortably exciting features. The recent security fix that went to 2.2.1 and older maintenance tracks is also contained in this update.

Updates since v2.2 ------------------

Ports

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Also contains various documentation updates and code clean-ups.

Fixes since v2.2 ----------------

Unless otherwise noted, all the fixes since v2.2 in the maintenance track are contained in this release (see the maintenance releases’ notes for details).

(1) ISO-like format is used, and
(2) the string can make sense interpreted as both y-m-d and y-d-m.

Git may still have to use the heuristics to tiebreak between dd/mm/yy
and mm/dd/yy, though.
(merge d372395 jk/approxidate-avoid-y-d-m-over-future-dates later to maint).

2.3.1

Git v2.3.1 Release Notes ========================

Fixes since v2.3 ----------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.3.10

Git v2.3.10 Release Notes =========================

Fixes since v2.3.9 ------------------

2.3.2

Git v2.3.2 Release Notes ========================

Fixes since v2.3.1 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.3.3

Git v2.3.3 Release Notes ========================

Fixes since v2.3.2 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.3.4

Git v2.3.4 Release Notes ========================

Fixes since v2.3.3 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.3.5

Git v2.3.5 Release Notes ========================

Fixes since v2.3.4 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.3.6

Git v2.3.6 Release Notes ========================

Fixes since v2.3.5 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.3.7

Git v2.3.7 Release Notes ========================

Fixes since v2.3.6 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.3.8

Git v2.3.8 Release Notes ========================

Fixes since v2.3.7 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.3.9

Git v2.3.9 Release Notes ========================

Fixes since v2.3.8 ------------------

2.30.0

Git 2.30 Release Notes ======================

Updates since v2.29 -------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.29 -----------------

2.30.1

Git v2.30.1 Release Notes =========================

This release is primarily to merge fixes accumulated on the ’master’ front to prepare for 2.31 release that are still relevant to 2.30.x maintenance track.

Fixes since v2.30 -----------------

Also contains minor documentation updates and code clean-ups.

2.30.2

Git v2.30.2 Release Notes =========================

This release merges up the fixes that appear in v2.17.6, v2.18.5, v2.19.6, v2.20.5, v2.21.4, v2.22.5, v2.23.4, v2.24.4, v2.25.5, v2.26.3, v2.27.1, v2.28.1 and v2.29.3 to address the security issue CVE-2021-21300; see the release notes for these versions for details.

2.30.3

Git v2.30.2 Release Notes =========================

This release addresses the security issue CVE-2022-24765.

Fixes since v2.30.2 -------------------

Credit for finding this vulnerability goes to 俞晨东; The fix was authored by Johannes Schindelin.

2.30.4

Git v2.30.4 Release Notes =========================

This release contains minor fix-ups for the changes that went into Git 2.30.3, which was made to address CVE-2022-24765.

Derrick Stolee (2): t0033: add tests for safe.directory setup: opt-out of check with safe.directory=*

Matheus Valadares (1): setup: fix safe.directory key not being checked

2.30.5

Git v2.30.5 Release Notes =========================

This release contains minor fix-ups for the changes that went into Git 2.30.3 and 2.30.4, addressing CVE-2022-29187.

Carlo Marcelo Arenas Belón (1): setup: tighten ownership checks post CVE-2022-24765

2.30.6

Git v2.30.6 Release Notes =========================

This release addresses the security issues CVE-2022-39253 and CVE-2022-39260.

Fixes since v2.30.5 -------------------

Git will no longer dereference symbolic links via the `--local`
clone mechanism, and will instead refuse to clone repositories that
have symbolic links present in the `$GIT_DIR/objects` directory.

Additionally, the value of `protocol.file.allow` is changed to be
"user" by default.
`git shell` is taught to refuse interactive commands that are
longer than 4MiB in size. `split_cmdline()` is hardened to reject
inputs larger than 2GiB.

Credit for finding CVE-2022-39253 goes to Cory Snider of Mirantis. The fix was authored by Taylor Blau, with help from Johannes Schindelin.

Credit for finding CVE-2022-39260 goes to Kevin Backhouse of GitHub. The fix was authored by Kevin Backhouse, Jeff King, and Taylor Blau.

Jeff King (2): shell: add basic tests shell: limit size of interactive commands

Kevin Backhouse (1): alias.c: reject too-long cmdline strings in split_cmdline()

Taylor Blau (11): builtin/clone.c: disallow --local clones with symlinks t/lib-submodule-update.sh: allow local submodules t/t1NNN: allow local submodules t/2NNNN: allow local submodules t/t3NNN: allow local submodules t/t4NNN: allow local submodules t/t5NNN: allow local submodules t/t6NNN: allow local submodules t/t7NNN: allow local submodules t/t9NNN: allow local submodules transport: make protocol.file.allow be "user" by default

2.30.7

Git v2.30.7 Release Notes =========================

This release addresses the security issues CVE-2022-41903 and CVE-2022-23521.

Fixes since v2.30.6 -------------------

git log has the ability to display commits using an arbitrary
format with its --format specifiers. This functionality is also
exposed to git archive via the export-subst gitattribute.

When processing the padding operators (e.g., %<(, %<|(, %>(,
%>>(, or %><( ), an integer overflow can occur in
pretty.c::format_and_pad_commit() where a size_t is improperly
stored as an int, and then added as an offset to a subsequent
memcpy() call.

This overflow can be triggered directly by a user running a
command which invokes the commit formatting machinery (e.g., git
log --format=...). It may also be triggered indirectly through
git archive via the export-subst mechanism, which expands format
specifiers inside of files within the repository during a git
archive.

This integer overflow can result in arbitrary heap writes, which
may result in remote code execution.
gitattributes are a mechanism to allow defining attributes for
paths. These attributes can be defined by adding a `.gitattributes`
file to the repository, which contains a set of file patterns and
the attributes that should be set for paths matching this pattern.

When parsing gitattributes, multiple integer overflows can occur
when there is a huge number of path patterns, a huge number of
attributes for a single pattern, or when the declared attribute
names are huge.

These overflows can be triggered via a crafted `.gitattributes` file
that may be part of the commit history. Git silently splits lines
longer than 2KB when parsing gitattributes from a file, but not when
parsing them from the index. Consequentially, the failure mode
depends on whether the file exists in the working tree, the index or
both.

This integer overflow can result in arbitrary heap reads and writes,
which may result in remote code execution.

Credit for finding CVE-2022-41903 goes to Joern Schneeweisz of GitLab. An initial fix was authored by Markus Vervier of X41 D-Sec. Credit for finding CVE-2022-23521 goes to Markus Vervier and Eric Sesterhenn of X41 D-Sec. This work was sponsored by OSTIF.

The proposed fixes have been polished and extended to cover additional findings by Patrick Steinhardt of GitLab, with help from others on the Git security mailing list.

Patrick Steinhardt (21): attr: fix overflow when upserting attribute with overly long name attr: fix out-of-bounds read with huge attribute names attr: fix integer overflow when parsing huge attribute names attr: fix out-of-bounds write when parsing huge number of attributes attr: fix out-of-bounds read with unreasonable amount of patterns attr: fix integer overflow with more than INT_MAX macros attr: harden allocation against integer overflows attr: fix silently splitting up lines longer than 2048 bytes attr: ignore attribute lines exceeding 2048 bytes attr: ignore overly large gitattributes files pretty: fix out-of-bounds write caused by integer overflow pretty: fix out-of-bounds read when left-flushing with stealing pretty: fix out-of-bounds read when parsing invalid padding format pretty: fix adding linefeed when placeholder is not expanded pretty: fix integer overflow in wrapping format utf8: fix truncated string lengths in utf8_strnwidth() utf8: fix returning negative string width utf8: fix overflow when returning string width utf8: fix checking for glyph width in strbuf_utf8_replace() utf8: refactor strbuf_utf8_replace to not rely on preallocated buffer pretty: restrict input lengths for padding and wrapping formats

2.30.8

Git v2.30.8 Release Notes =========================

This release addresses the security issues CVE-2023-22490 and CVE-2023-23946.

Fixes since v2.30.7 -------------------

Using a specially-crafted repository, Git can be tricked into using
its local clone optimization even when using a non-local transport.
Though Git will abort local clones whose source $GIT_DIR/objects
directory contains symbolic links (c.f., CVE-2022-39253), the objects
directory itself may still be a symbolic link.

These two may be combined to include arbitrary files based on known
paths on the victim's filesystem within the malicious repository's
working copy, allowing for data exfiltration in a similar manner as
CVE-2022-39253.
By feeding a crafted input to "git apply", a path outside the
working tree can be overwritten as the user who is running "git
apply".

Credit for finding CVE-2023-22490 goes to yvvdwf, and the fix was developed by Taylor Blau, with additional help from others on the Git security mailing list.

Credit for finding CVE-2023-23946 goes to Joern Schneeweisz, and the fix was developed by Patrick Steinhardt.

Johannes Schindelin (1): attr: adjust a mismatched data type

Patrick Steinhardt (1): apply: fix writing behind newly created symbolic links

Taylor Blau (3): t5619: demonstrate clone_local() with ambiguous transport clone: delay picking a transport until after get_repo_path() dir-iterator: prevent top-level symlinks without FOLLOW_SYMLINKS

2.30.9

Git v2.30.9 Release Notes =========================

This release addresses the security issues CVE-2023-25652, CVE-2023-25815, and CVE-2023-29007.

Fixes since v2.30.8 -------------------

By feeding specially crafted input to `git apply --reject`, a
path outside the working tree can be overwritten with partially
controlled contents (corresponding to the rejected hunk(s) from
the given patch).
When Git is compiled with runtime prefix support and runs without
translated messages, it still used the gettext machinery to
display messages, which subsequently potentially looked for
translated messages in unexpected places. This allowed for
malicious placement of crafted messages.
When renaming or deleting a section from a configuration file,
certain malicious configuration values may be misinterpreted as
the beginning of a new configuration section, leading to arbitrary
configuration injection.

Credit for finding CVE-2023-25652 goes to Ry0taK, and the fix was developed by Taylor Blau, Junio C Hamano and Johannes Schindelin, with the help of Linus Torvalds.

Credit for finding CVE-2023-25815 goes to Maxime Escourbiac and Yassine BENGANA of Michelin, and the fix was developed by Johannes Schindelin.

Credit for finding CVE-2023-29007 goes to André Baptista and Vítor Pinho of Ethiack, and the fix was developed by Taylor Blau, and Johannes Schindelin, with help from Jeff King, and Patrick Steinhardt.

2.31.0

Git 2.31 Release Notes ======================

Updates since v2.30 -------------------

Backward incompatible and other important changes

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.30 -----------------

2.31.1

Git 2.31.1 Release Notes ========================

Fixes since v2.31 -----------------

Also contains various documentation updates and code clean-ups.

2.31.2

Git v2.31.2 Release Notes =========================

This release merges up the fixes that appear in v2.30.3 to address the security issue CVE-2022-24765; see the release notes for that version for details.

2.31.3

Git Documentation/RelNotes/2.31.3.txt Release Notes =========================

This release merges up the fixes that appear in v2.31.3.

2.31.4

Git v2.31.4 Release Notes =========================

This release merges up the fixes that appear in v2.30.5 to address the security issue CVE-2022-29187; see the release notes for that version for details.

2.31.5

Git v2.31.5 Release Notes =========================

This release merges the security fix that appears in v2.30.6; see the release notes for that version for details.

2.31.6

Git v2.31.6 Release Notes =========================

This release merges the security fix that appears in v2.30.7; see the release notes for that version for details.

2.31.7

Git v2.31.7 Release Notes =========================

This release merges up the fixes that appear in v2.30.8 to address the security issues CVE-2023-22490 and CVE-2023-23946; see the release notes for that version for details.

2.31.8

Git v2.31.8 Release Notes =========================

This release merges the fixes that appear in v2.30.9 to address the security issues CVE-2023-25652, CVE-2023-25815, and CVE-2023-29007; see the release notes for that version for details.

2.32.0

Git 2.32 Release Notes ======================

Backward compatibility notes ----------------------------

Updates since v2.31 -------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.31 -----------------

2.32.1

Git v2.32.1 Release Notes =========================

This release merges up the fixes that appear in v2.30.3 and v2.31.2 to address the security issue CVE-2022-24765; see the release notes for these versions for details.

2.32.2

Git Documentation/RelNotes/2.32.2.txt Release Notes =========================

This release merges up the fixes that appear in v2.32.2.

2.32.3

Git v2.32.3 Release Notes =========================

This release merges up the fixes that appear in v2.30.5 and v2.31.4 to address the security issue CVE-2022-29187; see the release notes for these versions for details.

2.32.4

Git v2.32.4 Release Notes =========================

This release merges the security fix that appears in v2.30.6; see the release notes for that version for details.

2.32.5

Git v2.32.5 Release Notes =========================

This release merges the security fix that appears in v2.30.7; see the release notes for that version for details.

In addition, included are additional code for "git fsck" to check for questionable .gitattributes files.

2.32.6

Git v2.32.6 Release Notes =========================

This release merges up the fixes that appear in v2.30.8 and v2.31.7 to address the security issues CVE-2023-22490 and CVE-2023-23946; see the release notes for these versions for details.

2.32.7

Git v2.32.7 Release Notes =========================

This release merges the fixes that appear in v2.30.9 and v2.31.8 to address the security issues CVE-2023-25652, CVE-2023-25815, and CVE-2023-29007; see the release notes for these versions for details.

2.33.0

Git 2.33 Release Notes ======================

Updates since Git 2.32 ----------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.32 -----------------

2.33.1

Git 2.33.1 Release Notes ========================

This primarily is to backport various fixes accumulated during the development towards Git 2.34, the next feature release.

Fixes since v2.33 -----------------

Also contains various documentation updates and code clean-ups.

2.33.2

Git v2.33.2 Release Notes =========================

This release merges up the fixes that appear in v2.30.3, v2.31.2 and v2.32.1 to address the security issue CVE-2022-24765; see the release notes for these versions for details.

In addition, it contains the following fixes:

2.33.3

Git Documentation/RelNotes/2.33.3.txt Release Notes =========================

This release merges up the fixes that appear in v2.33.3.

2.33.4

Git v2.33.4 Release Notes =========================

This release merges up the fixes that appear in v2.30.5, v2.31.4 and v2.32.3 to address the security issue CVE-2022-29187; see the release notes for these versions for details.

2.33.5

Git v2.33.5 Release Notes =========================

This release merges the security fix that appears in v2.30.6; see the release notes for that version for details.

2.33.6

Git v2.33.6 Release Notes =========================

This release merges the security fix that appears in v2.30.7; see the release notes for that version for details.

2.33.7

Git v2.33.7 Release Notes =========================

This release merges up the fixes that appear in v2.30.8, v2.31.7 and v2.32.6 to address the security issues CVE-2023-22490 and CVE-2023-23946; see the release notes for these versions for details.

2.33.8

Git v2.33.8 Release Notes =========================

This release merges the fixes that appear in v2.30.9, v2.31.8 and v2.32.7 to address the security issues CVE-2023-25652, CVE-2023-25815, and CVE-2023-29007; see the release notes for these versions for details.

2.34.0

Git 2.34 Release Notes ======================

Updates since Git 2.33 ----------------------

Backward compatibility notes

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.33 -----------------

2.34.1

Git v2.34.1 Release Notes =========================

This release is primarily to fix a handful of regressions in Git 2.34.

Fixes since v2.34 -----------------

2.34.2

Git v2.34.2 Release Notes =========================

This release merges up the fixes that appear in v2.30.3, v2.31.2, v2.32.1 and v2.33.2 to address the security issue CVE-2022-24765; see the release notes for these versions for details.

2.34.3

Git Documentation/RelNotes/2.34.3.txt Release Notes =========================

This release merges up the fixes that appear in v2.34.3.

2.34.4

Git v2.34.4 Release Notes =========================

This release merges up the fixes that appear in v2.30.5, v2.31.4, v2.32.3 and v2.33.4 to address the security issue CVE-2022-29187; see the release notes for these versions for details.

2.34.5

Git v2.34.5 Release Notes =========================

This release merges the security fix that appears in v2.30.6; see the release notes for that version for details.

2.34.6

Git v2.34.6 Release Notes =========================

This release merges the security fix that appears in v2.30.7; see the release notes for that version for details.

2.34.7

Git v2.34.7 Release Notes =========================

This release merges up the fixes that appear in v2.30.8, v2.31.7, v2.32.6 and v2.33.7 to address the security issues CVE-2023-22490 and CVE-2023-23946; see the release notes for these versions for details.

2.34.8

Git v2.34.8 Release Notes =========================

This release merges the fixes that appear in v2.30.9, v2.31.8, v2.32.7 and v2.33.8 to address the security issues CVE-2023-25652, CVE-2023-25815, and CVE-2023-29007; see the release notes for these versions for details.

2.35.0

Git 2.35 Release Notes ======================

Updates since Git 2.34 ----------------------

Backward compatibility warts

Note to those who build from the source

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.34 -----------------

2.35.1

Git v2.35.1 Release Notes =========================

Git 2.35 shipped with a regression that broke use of "rebase" and "stash" in a secondary worktree. This maintenance release ought to fix it.

2.35.2

Git v2.35.2 Release Notes =========================

This release merges up the fixes that appear in v2.30.3, v2.31.2, v2.32.1, v2.33.2 and v2.34.2 to address the security issue CVE-2022-24765; see the release notes for these versions for details.

2.35.3

Git Documentation/RelNotes/2.35.3.txt Release Notes =========================

This release merges up the fixes that appear in v2.35.3.

2.35.4

Git v2.35.4 Release Notes =========================

This release merges up the fixes that appear in v2.30.5, v2.31.4, v2.32.3, v2.33.4 and v2.34.4 to address the security issue CVE-2022-29187; see the release notes for these versions for details.

2.35.5

Git v2.35.5 Release Notes =========================

This release merges the security fix that appears in v2.30.6; see the release notes for that version for details.

2.35.6

Git v2.35.6 Release Notes =========================

This release merges the security fix that appears in v2.30.7; see the release notes for that version for details.

2.35.7

Git v2.35.7 Release Notes =========================

This release merges up the fixes that appear in v2.30.8, v2.31.7, v2.32.6, v2.33.7 and v2.34.7 to address the security issues CVE-2023-22490 and CVE-2023-23946; see the release notes for these versions for details.

2.35.8

Git v2.35.8 Release Notes =========================

This release merges the fixes that appear in v2.30.9, v2.31.8, v2.32.7, v2.33.8 and v2.34.8 to address the security issues CVE-2023-25652, CVE-2023-25815, and CVE-2023-29007; see the release notes for these versions for details.

2.36.0

Git 2.36 Release Notes ======================

Updates since Git 2.35 ----------------------

Backward compatibility warts

Note to those who build from the source

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.35 -----------------

2.36.1

Git v2.36.1 Release Notes =========================

Fixes since v2.36 -----------------

Also contains minor documentation updates and code clean-ups.

2.36.2

Git v2.36.2 Release Notes =========================

This release merges up the fixes that appear in v2.30.5, v2.31.4, v2.32.3, v2.33.4, v2.34.4 and v2.35.4 to address the security issue CVE-2022-29187; see the release notes for these versions for details.

Apart from that, this maintenance release is primarily to merge down updates to the build and CI procedures from the ’master’ front, in order to ensure that we can cut healthy maintenance releases in the future. It also contains a handful of small and trivially-correct bugfixes.

Fixes since v2.36.1 -------------------

2.36.3

Git v2.36.3 Release Notes =========================

This release merges the security fix that appears in v2.30.6; see the release notes for that version for details.

2.36.4

Git v2.36.4 Release Notes =========================

This release merges the security fix that appears in v2.30.7; see the release notes for that version for details.

2.36.5

Git v2.36.5 Release Notes =========================

This release merges up the fixes that appear in v2.30.8, v2.31.7, v2.32.6, v2.33.7, v2.34.7 and v2.35.7 to address the security issues CVE-2023-22490 and CVE-2023-23946; see the release notes for these versions for details.

2.36.6

Git v2.36.6 Release Notes =========================

This release merges the fixes that appear in v2.30.9, v2.31.8, v2.32.7, v2.33.8, v2.34.8 and v2.35.8 to address the security issues CVE-2023-25652, CVS-2023-25815, and CVE-2023-29007; see the release notes for these versions for details.

2.37.0

Git v2.37 Release Notes =======================

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.36 -----------------

2.37.1

Git 2.37.1 Release Notes ========================

This release merges up the fixes that appear in v2.30.5, v2.31.4, v2.32.3, v2.33.4, v2.34.4, v2.35.4, and v2.36.2 to address the security issue CVE-2022-29187; see the release notes for these versions for details.

Fixes since Git 2.37 --------------------

2.37.2

Git 2.37.2 Release Notes ========================

This primarily is to backport various fixes accumulated on the ’master’ front since 2.37.1.

Fixes since v2.37.1 -------------------

Also contains minor documentation updates and code clean-ups.

2.37.3

Git 2.37.3 Release Notes ========================

This primarily is to backport various fixes accumulated on the ’master’ front since 2.37.2.

Fixes since v2.37.2 -------------------

Also contains other minor documentation updates and code clean-ups.

2.37.4

Git 2.37.4 Release Notes ========================

This primarily is to backport various fixes accumulated on the ’master’ front since 2.37.3, and also includes the same security fixes as in v2.30.6.

Fixes since v2.37.3 -------------------

Git will no longer dereference symbolic links via the `--local`
clone mechanism, and will instead refuse to clone repositories that
have symbolic links present in the `$GIT_DIR/objects` directory.

Additionally, the value of `protocol.file.allow` is changed to be
"user" by default.

Credit for finding CVE-2022-39253 goes to Cory Snider of Mirantis.
The fix was authored by Taylor Blau, with help from Johannes
Schindelin.
`git shell` is taught to refuse interactive commands that are
longer than 4MiB in size. `split_cmdline()` is hardened to reject
inputs larger than 2GiB.

Credit for finding CVE-2022-39260 goes to Kevin Backhouse of
GitHub. The fix was authored by Kevin Backhouse, Jeff King, and
Taylor Blau.

Also contains other minor documentation updates and code clean-ups.

2.37.5

Git v2.37.5 Release Notes =========================

This release merges the security fix that appears in v2.30.7; see the release notes for that version for details.

2.37.6

Git v2.37.6 Release Notes =========================

This release merges up the fixes that appear in v2.30.8, v2.31.7, v2.32.6, v2.33.7, v2.34.7, v2.35.7 and v2.36.5 to address the security issues CVE-2023-22490 and CVE-2023-23946; see the release notes for these versions for details.

2.37.7

Git v2.37.7 Release Notes =========================

This release merges up the fix that appears in v2.30.9, v2.31.8, v2.32.7, v2.33.8, v2.34.8, v2.35.8 and v2.36.6 to address the security issues CVE-2023-25652, CVE-2023-25815, and CVE-2023-29007; see the release notes for these versions for details.

2.38.0

Git v2.38 Release Notes =======================

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.37 -----------------

2.38.1

Git v2.38.1 Release Notes =========================

This release merges the security fix that appears in v2.30.6; see the release notes for that version for details.

2.38.2

Git 2.38.2 Release Notes ========================

This is to backport various fixes accumulated during the development towards Git 2.39, the next feature release.

Fixes since v2.38.1 -------------------

Also contains various documentation updates and code clean-ups.

2.38.3

Git v2.38.3 Release Notes =========================

This release merges the security fix that appears in v2.30.7; see the release notes for that version for details.

2.38.4

Git v2.38.4 Release Notes =========================

This release merges up the fixes that appear in v2.30.8, v2.31.7, v2.32.6, v2.33.7, v2.34.7, v2.35.7, v2.36.5 and v2.37.6 to address the security issues CVE-2023-22490 and CVE-2023-23946; see the release notes for these versions for details.

2.38.5

Git v2.38.5 Release Notes =========================

This release merges up the fix that appears in v2.30.9, v2.31.8, v2.32.7, v2.33.8, v2.34.8, v2.35.8, v2.36.6 and v2.37.7 to address the security issues CVE-2023-25652, CVE-2023-25815, and CVE-2023-29007; see the release notes for these versions for details.

2.39.0

Git v2.39 Release Notes =======================

UI, Workflows & Features ------------------------

Performance, Internal Implementation, Development Support etc. --------------------------------------------------------------

Fixes since v2.38 -----------------

2.39.1

Git v2.39.1 Release Notes =========================

This release merges the security fix that appears in v2.30.7; see the release notes for that version for details.

2.39.2

Git v2.39.2 Release Notes =========================

This release merges up the fixes that appear in v2.30.8, v2.31.7, v2.32.6, v2.33.7, v2.34.7, v2.35.7, v2.36.5, v2.37.6 and v2.38.4 to address the security issues CVE-2023-22490 and CVE-2023-23946; see the release notes for these versions for details.

2.39.3

Git v2.39.3 Release Notes =========================

This release merges up the fix that appears in v2.30.9, v2.31.8, v2.32.7, v2.33.8, v2.34.8, v2.35.8, v2.36.6, v2.37.7 and v2.38.5 to address the security issues CVE-2023-25652, CVE-2023-25815, and CVE-2023-29007; see the release notes for these versions for details.

This release also merges fixes that have accumulated on the ’master’ front to prepare for the 2.40 release that are still relevant to 2.39.x maintenance track.

Fixes since v2.39.2 -------------------

Also contains minor documentation updates and code clean-ups.

2.39.4

Git v2.39.4 Release Notes =========================

This addresses the security issues CVE-2024-32002, CVE-2024-32004, CVE-2024-32020 and CVE-2024-32021.

This release also backports fixes necessary to let the CI builds pass successfully.

Fixes since v2.39.3 -------------------

Recursive clones on case-insensitive filesystems that support symbolic
links are susceptible to case confusion that can be exploited to
execute just-cloned code during the clone operation.
Repositories can be configured to execute arbitrary code during local
clones. To address this, the ownership checks introduced in v2.30.3
are now extended to cover cloning local repositories.
Local clones may end up hardlinking files into the target repository's
object database when source and target repository reside on the same
disk. If the source repository is owned by a different user, then
those hardlinked files may be rewritten at any point in time by the
untrusted user.
When cloning a local source repository that contains symlinks via the
filesystem, Git may create hardlinks to arbitrary user-readable files
on the same filesystem as the target repository in the objects/
directory.
It is supposed to be safe to clone untrusted repositories, even those
unpacked from zip archives or tarballs originating from untrusted
sources, but Git can be tricked to run arbitrary code as part of the
clone.

2.39.5

Git v2.39.5 Release Notes =========================

In preparing security fixes for four CVEs, we made overly aggressive "defense in depth" changes that broke legitimate use cases like ’git lfs’ and ’git annex.’ This release is to revert these misguided, if well-intentioned, changes that were shipped in 2.39.4 and were not direct security fixes.

Jeff King (5): send-email: drop FakeTerm hack send-email: avoid creating more than one Term::ReadLine object ci: drop mention of BREW_INSTALL_PACKAGES variable ci: avoid bare "gcc" for osx-gcc job ci: stop installing "gcc-13" for osx-gcc

Johannes Schindelin (6): hook: plug a new memory leak init: use the correct path of the templates directory again Revert "core.hooksPath: add some protection while cloning" tests: verify that clone -c core.hooksPath=/dev/null works again clone: drop the protections where hooks aren’t run Revert "Add a helper function to compare file contents"

Junio C Hamano (1): Revert "fsck: warn about symlink pointing inside a gitdir"

2.4.0

Git 2.4 Release Notes =====================

Backward compatibility warning(s) ---------------------------------

This release has a few changes in the user-visible output from Porcelain commands. These are not meant to be parsed by scripts, but users still may want to be aware of the changes:

$ git log --decorate -1 master
commit bdb0f6788fa5e3cacc4315e9ff318a27b2676ff4 (HEAD, master)
...

This release changes the output slightly when HEAD refers to a
branch whose name is also shown in the output. The above is now
shown as:

$ git log --decorate -1 master
commit bdb0f6788fa5e3cacc4315e9ff318a27b2676ff4 (HEAD -> master)
...
Previously, "git branch" always used "from".

Updates since v2.3 ------------------

Ports

UI, Workflows & Features

This is a potentially backward-incompatible change; see above for
more information.
This is a potentially backward-incompatible change; see above for
more information.

Performance, Internal Implementation, Development Support etc.

Also contains various documentation updates and code clean-ups.

Fixes since v2.3 ----------------

Unless otherwise noted, all the fixes since v2.3 in the maintenance track are contained in this release (see the maintenance releases’ notes for details).

2.4.1

Git v2.4.1 Release Notes ========================

Fixes since v2.4 ----------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.4.10

Git v2.4.10 Release Notes =========================

Fixes since v2.4.9 ------------------

2.4.11

Git v2.4.11 Release Notes =========================

Fixes since v2.4.10 -------------------

2.4.12

Git v2.4.12 Release Notes =========================

Fixes since v2.4.11 -------------------

2.4.2

Git v2.4.2 Release Notes ========================

Fixes since v2.4.1 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.4.3

Git v2.4.3 Release Notes ========================

Fixes since v2.4.3 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.4.4

Git v2.4.4 Release Notes ========================

Fixes since v2.4.3 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.4.5

Git v2.4.5 Release Notes ========================

Fixes since v2.4.4 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.4.6

Git v2.4.6 Release Notes ========================

Fixes since v2.4.5 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.4.7

Git v2.4.7 Release Notes ========================

Fixes since v2.4.6 ------------------

Stop leaking that environment variable to the pager's half of the
fork; we only need it on "Git" side when we spawn the pager.

Also contains typofixes, documentation updates and trivial code clean-ups.

2.4.8

Git v2.4.8 Release Notes ========================

Fixes since v2.4.7 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.4.9

Git v2.4.9 Release Notes ========================

Fixes since v2.4.9 ------------------

2.40.0

Git v2.40 Release Notes =======================

UI, Workflows & Features

This is a backward incompatible change.

Performance, Internal Implementation, Development Support etc.

We'd probably need to revisit "do we really want to, and have to,
lose CRLF vs LF?" later, at which time we may be able to further
clean this up by replacing "git diff --no-index" with "diff -u".

Fixes since v2.39 -----------------

2.40.1

Git v2.40.1 Release Notes =========================

This release merges up the fix that appears in v2.30.9, v2.31.8, v2.32.7, v2.33.8, v2.34.8, v2.35.8, v2.36.6, v2.37.7, v2.38.5 and v2.39.3 to address the security issues CVE-2023-25652, CVE-2023-25815, and CVE-2023-29007; see the release notes for these versions for details.

2.40.2

Git v2.40.2 Release Notes =========================

This release merges up the fix that appears in v2.39.4 to address the security issues CVE-2024-32002, CVE-2024-32004, CVE-2024-32020, CVE-2024-32021 and CVE-2024-32465; see the release notes for that version for details.

2.40.3

Git v2.40.3 Release Notes =========================

In preparing security fixes for four CVEs, we made overly aggressive "defense in depth" changes that broke legitimate use cases like ’git lfs’ and ’git annex.’ This release is to revert these misguided, if well-intentioned, changes that were shipped in 2.40.2 and were not direct security fixes.

Jeff King (5): send-email: drop FakeTerm hack send-email: avoid creating more than one Term::ReadLine object ci: drop mention of BREW_INSTALL_PACKAGES variable ci: avoid bare "gcc" for osx-gcc job ci: stop installing "gcc-13" for osx-gcc

Johannes Schindelin (6): hook: plug a new memory leak init: use the correct path of the templates directory again Revert "core.hooksPath: add some protection while cloning" tests: verify that clone -c core.hooksPath=/dev/null works again clone: drop the protections where hooks aren’t run Revert "Add a helper function to compare file contents"

Junio C Hamano (1): Revert "fsck: warn about symlink pointing inside a gitdir"

2.40.4

Git v2.40.4 Release Notes =========================

This release lets Git refuse to accept URLs that contain control sequences. This addresses CVE-2024-50349 and CVE-2024-52006.

2.41.0

Git v2.41 Release Notes =======================

UI, Workflows & Features

This is a backward compatibility breaking change.

Performance, Internal Implementation, Development Support etc.

Fixes since v2.40 -----------------

2.41.1

Git v2.41.1 Release Notes =========================

This release merges up the fix that appears in v2.39.4 and v2.40.2 to address the security issues CVE-2024-32002, CVE-2024-32004, CVE-2024-32020, CVE-2024-32021 and CVE-2024-32465; see the release notes for these versions for details.

2.41.2

Git v2.41.2 Release Notes =========================

In preparing security fixes for four CVEs, we made overly aggressive "defense in depth" changes that broke legitimate use cases like ’git lfs’ and ’git annex.’ This release is to revert these misguided, if well-intentioned, changes that were shipped in 2.41.1 and were not direct security fixes.

Jeff King (5): send-email: drop FakeTerm hack send-email: avoid creating more than one Term::ReadLine object ci: drop mention of BREW_INSTALL_PACKAGES variable ci: avoid bare "gcc" for osx-gcc job ci: stop installing "gcc-13" for osx-gcc

Johannes Schindelin (6): hook: plug a new memory leak init: use the correct path of the templates directory again Revert "core.hooksPath: add some protection while cloning" tests: verify that clone -c core.hooksPath=/dev/null works again clone: drop the protections where hooks aren’t run Revert "Add a helper function to compare file contents"

Junio C Hamano (1): Revert "fsck: warn about symlink pointing inside a gitdir"

2.41.3

Git v2.41.3 Release Notes =========================

This release merges up the fix that appears in v2.40.4 to address the security issues CVE-2024-50349 and CVE-2024-52006; see the release notes for that version for details.

2.42.0

Git v2.42 Release Notes =======================

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.41 -----------------

The global variable has been eliminated and made into a member in
the per-repository data structure.
(merge 3867f6d650 vd/worktree-config-is-per-repository later to maint).

2.42.1

Git 2.42.1 Release Notes ========================

There is nothing exciting to see here. Relative to Git 2.42, this release contains the fixes that have already been merged to the ’master’ branch of the development towards Git 2.43 that has been tagged as Git 2.43.0-rc0.

Fixes since Git 2.42.0 ----------------------

Also contains various documentation updates, code clean-ups and minor fixups.

2.42.2

Git v2.42.2 Release Notes =========================

This release merges up the fix that appears in v2.39.4, v2.40.2 and v2.41.1 to address the security issues CVE-2024-32002, CVE-2024-32004, CVE-2024-32020, CVE-2024-32021 and CVE-2024-32465; see the release notes for these versions for details.

2.42.3

Git v2.42.3 Release Notes =========================

In preparing security fixes for four CVEs, we made overly aggressive "defense in depth" changes that broke legitimate use cases like ’git lfs’ and ’git annex.’ This release is to revert these misguided, if well-intentioned, changes that were shipped in 2.42.2 and were not direct security fixes.

Jeff King (5): send-email: drop FakeTerm hack send-email: avoid creating more than one Term::ReadLine object ci: drop mention of BREW_INSTALL_PACKAGES variable ci: avoid bare "gcc" for osx-gcc job ci: stop installing "gcc-13" for osx-gcc

Johannes Schindelin (6): hook: plug a new memory leak init: use the correct path of the templates directory again Revert "core.hooksPath: add some protection while cloning" tests: verify that clone -c core.hooksPath=/dev/null works again clone: drop the protections where hooks aren’t run Revert "Add a helper function to compare file contents"

Junio C Hamano (1): Revert "fsck: warn about symlink pointing inside a gitdir"

2.42.4

Git v2.42.4 Release Notes =========================

This release merges up the fix that appears in v2.40.4 and v2.41.3 to address the security issues CVE-2024-50349 and CVE-2024-52006; see the release notes for these versions for details.

2.43.0

Git v2.43 Release Notes =======================

Backward Compatibility Notes

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.42 -----------------

2.43.1

Git 2.43.1 Release Notes ========================

There is nothing exciting to see here. Relative to Git 2.43, this release contains the fixes that have already been merged to the ’master’ branch of the development towards the next major release.

Fixes since Git 2.43.0 ----------------------

Also contains various documentation updates, code clean-ups and minor fixups.

2.43.2

Git 2.43.2 Release Notes ========================

Relative to Git 2.43.1, this release has two important fixes to allow "git imap-send" to be built with NO_CURL defined, and to restore the forced flushing behaviour when GIT_FLUSH=1 is set. It also contains other, unexciting, fixes that have already been merged to the ’master’ branch of the development towards the next major release.

Fixes since Git 2.43.1 ----------------------

Also contains documentation updates, code clean-ups and minor fixups.

2.43.3

Git 2.43.3 Release Notes ========================

Relative to Git 2.43.2, this release fixes one regression that manifests while running "git commit -v --trailer".

Fixes since Git 2.43.2 ----------------------

2.43.4

Git v2.43.4 Release Notes =========================

This release merges up the fix that appears in v2.39.4, v2.40.2, v2.41.1 and v2.42.2 to address the security issues CVE-2024-32002, CVE-2024-32004, CVE-2024-32020, CVE-2024-32021 and CVE-2024-32465; see the release notes for these versions for details.

2.43.5

Git v2.43.5 Release Notes =========================

In preparing security fixes for four CVEs, we made overly aggressive "defense in depth" changes that broke legitimate use cases like ’git lfs’ and ’git annex.’ This release is to revert these misguided, if well-intentioned, changes that were shipped in 2.43.4 and were not direct security fixes.

Jeff King (5): send-email: drop FakeTerm hack send-email: avoid creating more than one Term::ReadLine object ci: drop mention of BREW_INSTALL_PACKAGES variable ci: avoid bare "gcc" for osx-gcc job ci: stop installing "gcc-13" for osx-gcc

Johannes Schindelin (6): hook: plug a new memory leak init: use the correct path of the templates directory again Revert "core.hooksPath: add some protection while cloning" tests: verify that clone -c core.hooksPath=/dev/null works again clone: drop the protections where hooks aren’t run Revert "Add a helper function to compare file contents"

Junio C Hamano (1): Revert "fsck: warn about symlink pointing inside a gitdir"

2.43.6

Git v2.43.6 Release Notes =========================

This release merges up the fix that appears in v2.40.4, v2.41.3 and v2.42.4 to address the security issues CVE-2024-50349 and CVE-2024-52006; see the release notes for these versions for details.

2.43.7

Git v2.43.7 Release Notes =========================

This release includes fixes for CVE-2025-27613, CVE-2025-27614, CVE-2025-46334, CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and CVE-2025-48386.

Fixes since v2.43.6 -------------------

When a user clones an untrusted repository and runs Gitk without
additional command arguments, any writable file can be created and
truncated. The option "Support per-file encoding" must have been
enabled. The operation "Show origin of this line" is affected as
well, regardless of the option being enabled or not.
A Git repository can be crafted in such a way that a user who has
cloned the repository can be tricked into running any script
supplied by the attacker by invoking `gitk filename`, where
`filename` has a particular structure.
A malicious repository can ship versions of sh.exe or typical
textconv filter programs such as astextplain. On Windows, path
lookup can find such executables in the worktree. These programs
are invoked when the user selects "Git Bash" or "Browse Files" from
the menu.
When a user clones an untrusted repository and is tricked into
editing a file located in a maliciously named directory in the
repository, then Git GUI can create and overwrite any writable
file.
When reading a config value, Git strips any trailing carriage
return and line feed (CRLF). When writing a config entry, values
with a trailing CR are not quoted, causing the CR to be lost when
the config is later read.  When initializing a submodule, if the
submodule path contains a trailing CR, the altered path is read
resulting in the submodule being checked out to an incorrect
location. If a symlink exists that points the altered path to the
submodule hooks directory, and the submodule contains an executable
post-checkout hook, the script may be unintentionally executed
after checkout.
When cloning a repository Git knows to optionally fetch a bundle
advertised by the remote server, which allows the server-side to
offload parts of the clone to a CDN. The Git client does not
perform sufficient validation of the advertised bundles, which
allows the remote side to perform protocol injection.

This protocol injection can cause the client to write the fetched
bundle to a location controlled by the adversary. The fetched
content is fully controlled by the server, which can in the worst
case lead to arbitrary code execution.
The wincred credential helper uses a static buffer (`target`) as a
unique key for storing and comparing against internal storage. This
credential helper does not properly bounds check the available
space remaining in the buffer before appending to it with
`wcsncat()`, leading to potential buffer overflows.

2.44.0

Git v2.44 Release Notes =======================

Backward Compatibility Notes

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

It might make sense to reassess the plumbing needs every few years,
but that should be done as a separate effort.

Fixes since v2.43 -----------------

2.44.1

Git v2.44.1 Release Notes =========================

This release merges up the fix that appears in v2.39.4, v2.40.2, v2.41.1, v2.42.2 and v2.43.4 to address the security issues CVE-2024-32002, CVE-2024-32004, CVE-2024-32020, CVE-2024-32021 and CVE-2024-32465; see the release notes for these versions for details.

2.44.2

Git v2.44.2 Release Notes =========================

In preparing security fixes for four CVEs, we made overly aggressive "defense in depth" changes that broke legitimate use cases like ’git lfs’ and ’git annex.’ This release is to revert these misguided, if well-intentioned, changes that were shipped in 2.44.1 and were not direct security fixes.

Jeff King (5): send-email: drop FakeTerm hack send-email: avoid creating more than one Term::ReadLine object ci: drop mention of BREW_INSTALL_PACKAGES variable ci: avoid bare "gcc" for osx-gcc job ci: stop installing "gcc-13" for osx-gcc

Johannes Schindelin (6): hook: plug a new memory leak init: use the correct path of the templates directory again Revert "core.hooksPath: add some protection while cloning" tests: verify that clone -c core.hooksPath=/dev/null works again clone: drop the protections where hooks aren’t run Revert "Add a helper function to compare file contents"

Junio C Hamano (1): Revert "fsck: warn about symlink pointing inside a gitdir"

2.44.3

Git v2.44.3 Release Notes =========================

This release merges up the fix that appears in v2.40.4, v2.41.3, v2.42.4 and v2.43.6 to address the security issues CVE-2024-50349 and CVE-2024-52006; see the release notes for these versions for details.

2.44.4

Git v2.44.4 Release Notes =========================

This release merges up the fixes that appears in v2.43.7 to address the following CVEs: CVE-2025-27613, CVE-2025-27614, CVE-2025-46334, CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and CVE-2025-48386. See the release notes for v2.43.7 for details.

2.45.0

Git v2.45 Release Notes =======================

Backward Compatibility Notes

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.44 -----------------

2.45.1

Git v2.45.1 Release Notes =========================

This release merges up the fix that appears in v2.39.4, v2.40.2, v2.41.1, v2.42.2, v2.43.4 and v2.44.1 to address the security issues CVE-2024-32002, CVE-2024-32004, CVE-2024-32020, CVE-2024-32021 and CVE-2024-32465; see the release notes for these versions for details.

2.45.2

Git v2.45.2 Release Notes =========================

In preparing security fixes for four CVEs, we made overly aggressive "defense in depth" changes that broke legitimate use cases like ’git lfs’ and ’git annex.’ This release is to revert these misguided, if well-intentioned, changes that were shipped in 2.45.1 and were not direct security fixes.

Jeff King (5): send-email: drop FakeTerm hack send-email: avoid creating more than one Term::ReadLine object ci: drop mention of BREW_INSTALL_PACKAGES variable ci: avoid bare "gcc" for osx-gcc job ci: stop installing "gcc-13" for osx-gcc

Johannes Schindelin (6): hook: plug a new memory leak init: use the correct path of the templates directory again Revert "core.hooksPath: add some protection while cloning" tests: verify that clone -c core.hooksPath=/dev/null works again clone: drop the protections where hooks aren’t run Revert "Add a helper function to compare file contents"

Junio C Hamano (1): Revert "fsck: warn about symlink pointing inside a gitdir"

2.45.3

Git v2.45.3 Release Notes =========================

This release merges up the fix that appears in v2.40.4, v2.41.3, v2.42.4, v2.43.6 and v2.44.3 to address the security issues CVE-2024-50349 and CVE-2024-52006; see the release notes for these versions for details.

This version also backports various small fixes accumulated on the ’master’ front during the development towards Git 2.46, the next feature release.

Fixes since v2.45.2 -------------------

Also contains various documentation updates and code clean-ups.

2.45.4

Git v2.45.4 Release Notes =========================

This release merges up the fixes that appears in v2.43.7, and v2.44.4 to address the following CVEs: CVE-2025-27613, CVE-2025-27614, CVE-2025-46334, CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and CVE-2025-48386. See the release notes for v2.43.7 for details.

2.46.0

Git v2.46 Release Notes =======================

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Fixes since v2.45 -----------------

2.46.1

Git 2.46.1 Release Notes ========================

This release is primarily to merge fixes accumulated on the ’master’ front to prepare for 2.47 release that are still relevant to 2.46.x maintenance track.

Fixes since Git 2.46 --------------------

Also contains minor documentation updates and code clean-ups.

2.46.2

Git 2.46.2 Release Notes ========================

This release is primarily to merge changes to unbreak the 32-bit GitHub actions jobs we use for CI testing, so that we can release real fixes for the 2.46.x track after they pass CI.

It also reverts the "git patch-id" change that went into 2.46.1, as it seems to have got a regression reported (I haven’t verified, but it is better to keep a known breakage than adding an unintended regression).

Other than that, a handful of minor bugfixes are included.

2.46.3

Git v2.46.3 Release Notes =========================

This release merges up the fix that appears in v2.40.4, v2.41.3, v2.42.4, v2.43.6, v2.44.3 and v2.45.3 to address the security issues CVE-2024-50349 and CVE-2024-52006; see the release notes for these versions for details.

2.46.4

Git v2.46.4 Release Notes =========================

This release merges up the fixes that appears in v2.43.7, v2.44.4, and v2.45.4 to address the following CVEs: CVE-2025-27613, CVE-2025-27614, CVE-2025-46334, CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and CVE-2025-48386. See the release notes for v2.43.7 for details.

2.47.0

Git v2.47 Release Notes =======================

UI, Workflows & Features ------------------------

Performance, Internal Implementation, Development Support etc. --------------------------------------------------------------

Fixes since v2.46 -----------------

2.47.1

Git 2.47.1 Release Notes ========================

This is to flush accumulated fixes since 2.47.0 on the ’master’ front down to the maintenance track.

Fixes since Git 2.47 --------------------

Also contains minor documentation updates and code clean-ups.

2.47.2

Git v2.47.2 Release Notes =========================

This release merges up the fix that appears in v2.40.4, v2.41.3, v2.42.4, v2.43.6, v2.44.3, v2.45.3 and v2.46.3 to address the security issues CVE-2024-50349 and CVE-2024-52006; see the release notes for these versions for details.

2.47.3

Git v2.47.3 Release Notes =========================

This release merges up the fixes that appears in v2.43.7, v2.44.4, v2.45.4, and v2.46.4 to address the following CVEs: CVE-2025-27613, CVE-2025-27614, CVE-2025-46334, CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and CVE-2025-48386. See the release notes for v2.43.7 for details.

2.48.0

Git v2.48 Release Notes =======================

UI, Workflows & Features ------------------------

Performance, Internal Implementation, Development Support etc. --------------------------------------------------------------

Fixes since v2.47 -----------------

2.48.1

Git v2.48.1 Release Notes =========================

This release merges up the fix that appears in v2.40.4, v2.41.3, v2.42.4, v2.43.6, v2.44.3, v2.45.3, v2.46.3, and v2.47.2 to address the security issues CVE-2024-50349 and CVE-2024-52006; see the release notes for these versions for details.

2.48.2

Git v2.48.2 Release Notes =========================

This release merges up the fixes that appears in v2.43.7, v2.44.4, v2.45.4, v2.46.4, and v2.47.3 to address the following CVEs: CVE-2025-27613, CVE-2025-27614, CVE-2025-46334, CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and CVE-2025-48386. See the release notes for v2.43.7 for details.

2.49.0

Git v2.49 Release Notes =======================

UI, Workflows & Features ------------------------

Performance, Internal Implementation, Development Support etc. --------------------------------------------------------------

Fixes since v2.48 -----------------

2.49.1

Git v2.49.1 Release Notes =========================

This release merges up the fixes that appear in v2.43.7, v2.44.4, v2.45.4, v2.46.4, v2.47.3, and v2.48.2 to address the following CVEs: CVE-2025-27613, CVE-2025-27614, CVE-2025-46334, CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and CVE-2025-48386. See the release notes for v2.43.7 for details.

It also contains some updates to various CI bits to work around and/or to adjust to the deprecation of use of Ubuntu 20.04 GitHub Actions CI, updates to to Fedora base image.

2.5.0

Git 2.5 Release Notes =====================

Updates since v2.4 ------------------

UI, Workflows & Features

Consider this as still an experimental feature; its UI is still
likely to change.
This changes semantics, but arguably in a good way.  If a filter
can produce its output without fully consuming its input using
whatever magic, we now let it do so, instead of diagnosing it
as a programming error.
Consider this as still an experimental and incomplete feature:

Performance, Internal Implementation, Development Support etc.

I have a slight suspicion that this may be
cf. <7vtzf77wjp.fsf@gitster.siamese.dyndns.org> coming back
and biting us (I seem to have said "let's run with this and see
what happens" back then).

Also contains various documentation updates and code clean-ups.

Fixes since v2.4 ----------------

Unless otherwise noted, all the fixes since v2.4 in the maintenance track are contained in this release (see the maintenance releases’ notes for details).

Stop leaking that environment variable to the pager's half of the
fork; we only need it on "Git" side when we spawn the pager.
(merge 124b519 jc/unexport-git-pager-in-use-in-pager later to maint).

2.5.1

Git v2.5.1 Release Notes ========================

Fixes since v2.5 ----------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.5.2

Git v2.5.2 Release Notes ========================

Fixes since v2.5.1 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.5.3

Git v2.5.3 Release Notes ========================

Fixes since v2.5.2 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.5.4

Git v2.5.4 Release Notes ========================

Fixes since v2.5.4 ------------------

2.5.5

Git v2.5.5 Release Notes ========================

Fixes since v2.5.4 ------------------

2.5.6

Git v2.5.6 Release Notes ========================

Fixes since v2.5.5 ------------------

2.50.0

Git v2.50 Release Notes =======================

UI, Workflows & Features ------------------------

Performance, Internal Implementation, Development Support etc. --------------------------------------------------------------

Fixes since v2.49 -----------------

2.50.1

Git v2.50.1 Release Notes =========================

This release merges up the fixes that appear in v2.43.7, v2.44.4, v2.45.4, v2.46.4, v2.47.3, v2.48.2, and v2.49.1 to address the following CVEs: CVE-2025-27613, CVE-2025-27614, CVE-2025-46334, CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and CVE-2025-48386. See the release notes for v2.43.7 for details.

2.51.0

Git v2.51 Release Notes =======================

UI, Workflows & Features ------------------------

Performance, Internal Implementation, Development Support etc. --------------------------------------------------------------

Fixes since v2.50 -----------------

Unless otherwise noted, all the changes in 2.50.X maintenance track, including security updates, are included in this release.

2.51.1

Git 2.51.1 Release Notes ========================

There shouldn’t be anything exciting to see here. This is primarily to flush the "do you still use it?" improvements that has landed on the master front, together with a handful of low-hanging, low-impact fixes that should be safe.

Fixes since Git 2.51.0 ----------------------

Also contains various documentation updates, code cleanups and minor fixups.

2.51.2

Git 2.51.2 Release Notes ========================

In addition to fixes for an unfortunate regression introduced in Git 2.51.1 that caused "git diff --quiet -w" to be not so quiet when there are additions, deletions and conflicts, this maintenance release merges more fixes/improvements that have landed on the master front, primarily to make the CI part of the system a bit more robust.

Fixes since Git 2.51.1 ----------------------

Also contains various documentation updates, code cleanups and minor fixups.

2.52.0

Git v2.52 Release Notes =======================

UI, Workflows & Features ------------------------

Performance, Internal Implementation, Development Support etc. --------------------------------------------------------------

Fixes since v2.51 -----------------

Unless otherwise noted, all the changes in 2.51.X maintenance track, including security updates, are included in this release.

2.53.0

Git v2.53 Release Notes =======================

UI, Workflows & Features ------------------------

Performance, Internal Implementation, Development Support etc. --------------------------------------------------------------

Fixes since v2.52 -----------------

2.54.0

Git v2.54 Release Notes =======================

UI, Workflows & Features ------------------------

Performance, Internal Implementation, Development Support etc. --------------------------------------------------------------

Fixes since v2.53 -----------------

2.54.1

Git v2.54.1 Release Notes =========================

This release is primarily to merge fixes accumulated on the ’master’ front to prepare for 2.55 release that are still relevant to 2.54.x maintenance track.

Fixes since v2.54 -----------------

Also contains minor documentation updates and code clean-ups.

2.55.0

Git v2.55 Release Notes =======================

UI, Workflows & Features ------------------------

Performance, Internal Implementation, Development Support etc. --------------------------------------------------------------

Fixes since v2.54 -----------------

2.56.0

Git v2.56 Release Notes =======================

UI, Workflows & Features ------------------------

Performance, Internal Implementation, Development Support etc. --------------------------------------------------------------

Fixes since v2.55 -----------------

2.6.0

Git 2.6 Release Notes =====================

Updates since v2.5 ------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

The same logic in "git checkout" may now be removed, but that is a
separate issue.

Also contains various documentation updates and code clean-ups.

Fixes since v2.5 ----------------

Unless otherwise noted, all the fixes since v2.5 in the maintenance track are contained in this release (see the maintenance releases’ notes for details).

Note that this is irrelevant for 'master' with "git pull" rewritten
in C.
(merge 13e0e28 mm/pull-upload-pack later to maint).

2.6.1

Git v2.6.1 Release Notes ========================

Fixes since v2.6 ----------------

2.6.2

Git v2.6.2 Release Notes ========================

Fixes since v2.6.1 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.6.3

Git v2.6.3 Release Notes ========================

Fixes since v2.6.2 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.6.4

Git v2.6.4 Release Notes ========================

Fixes since v2.6.3 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.6.5

Git v2.6.5 Release Notes ========================

Fixes since v2.6.4 ------------------

Also contains typofixes, documentation updates and trivial code clean-ups.

2.6.6

Git v2.6.6 Release Notes ========================

Fixes since v2.6.5 ------------------

2.6.7

Git v2.6.7 Release Notes ========================

Fixes since v2.6.6 ------------------

2.7.0

Git 2.7 Release Notes =====================

Updates since v2.6 ------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Also contains various documentation updates and code clean-ups.

Fixes since v2.6 ----------------

Unless otherwise noted, all the fixes since v2.6 in the maintenance track are contained in this release (see the maintenance releases’ notes for details).

2.7.1

Git v2.7.1 Release Notes ========================

Fixes since v2.7 ----------------

Also includes a handful of documentation and test updates.

2.7.2

Git v2.7.2 Release Notes ========================

Fixes since v2.7.1 ------------------

Also includes tiny documentation and test updates.

2.7.3

Git v2.7.3 Release Notes ========================

Fixes since v2.7.2 ------------------

Also includes documentation and test updates.

2.7.4

Git v2.7.4 Release Notes ========================

Fixes since v2.7.3 ------------------

2.7.5

Git v2.7.5 Release Notes ========================

Fixes since v2.7.4 ------------------

Also contains a few fixes backported from later development tracks.

2.7.6

Git v2.7.6 Release Notes ========================

Fixes since v2.7.5 ------------------

Credits go to Brian Neel at GitLab, Joern Schneeweisz of Recurity Labs and Jeff King at GitHub.

2.8.0

Git 2.8 Release Notes =====================

Backward compatibility note ---------------------------

The rsync:

Updates since v2.7 ------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Also contains various documentation updates and code clean-ups.

Fixes since v2.7 ----------------

Unless otherwise noted, all the fixes since v2.7 in the maintenance track are contained in this release (see the maintenance releases’ notes for details).

Somebody may want to follow this up with an additional test, perhaps?
IIRC, we do test that no Perl warnings are given to the server log,
so this should have been caught if our test coverage were good.

2.8.1

Git v2.8.1 Release Notes ========================

Fixes since v2.8 ----------------

2.8.2

Git v2.8.2 Release Notes ========================

Fixes since v2.8.1 ------------------

Also contains minor documentation updates and code clean-ups.

2.8.3

Git v2.8.3 Release Notes ========================

Fixes since v2.8.2 ------------------

This is necessary to use Git on Windows shared directories, and is
already enabled for the MinGW and plain Windows builds.  It also
has been used in Cygwin packaged versions of Git for quite a while.
See https://lore.kernel.org/git/20160419091055.GF2345@dinwoodie.org/
and https://lore.kernel.org/git/20150811100527.GW14466@dinwoodie.org/.

Also contains minor documentation updates and code clean-ups.

2.8.4

Git v2.8.4 Release Notes ========================

Fixes since v2.8.3 ------------------

Also contains other minor documentation updates and code clean-ups.

2.8.5

Git v2.8.5 Release Notes ========================

Fixes since v2.8.4 ------------------

2.8.6

Git v2.8.6 Release Notes ========================

This release forward-ports the fix for "ssh://…" URL from Git v2.7.6

2.9.0

Git 2.9 Release Notes =====================

Backward compatibility notes ----------------------------

The end-user facing Porcelain level commands in the "git diff" and "git log" family by default enable the rename detection; you can still use "diff.renames" configuration variable to disable this.

Merging two branches that have no common ancestor with "git merge" is by default forbidden now to prevent creating such an unusual merge by mistake.

The output formats of "git log" that indents the commit log message by 4 spaces now expands HT in the log message by default. You can use the "--no-expand-tabs" option to disable this.

"git commit-tree" plumbing command required the user to always sign its result when the user sets the commit.gpgsign configuration variable, which was an ancient mistake, which this release corrects. A script that drives commit-tree, if it relies on this mistake, now needs to read commit.gpgsign and pass the -S option as necessary.

Updates since v2.8 ------------------

UI, Workflows & Features

Performance, Internal Implementation, Development Support etc.

Also contains various documentation updates and code clean-ups.

Fixes since v2.8 ----------------

Unless otherwise noted, all the fixes since v2.8 in the maintenance track are contained in this release (see the maintenance releases’ notes for details).

This is necessary to use Git on Windows shared directories, and is
already enabled for the MinGW and plain Windows builds.  It also
has been used in Cygwin packaged versions of Git for quite a while.
See https://lore.kernel.org/git/20160419091055.GF2345@dinwoodie.org/

2.9.1

Git v2.9.1 Release Notes ========================

Fixes since v2.9 ----------------

Also contains minor documentation updates and code clean-ups.

2.9.2

Git v2.9.2 Release Notes ========================

Fixes since v2.9.1 ------------------

No other change is included in this update.

2.9.3

Git v2.9.3 Release Notes ========================

Fixes since v2.9.2 ------------------

Also contains minor documentation updates and code clean-ups.

2.9.4

Git v2.9.4 Release Notes ========================

Fixes since v2.9.3 ------------------

Also contains minor documentation updates and code clean-ups.

2.9.5

Git v2.9.5 Release Notes ========================

This release forward-ports the fix for "ssh://…" URL from Git v2.7.6

2.98.0

Git v2.98 Release Notes =======================

This is meant to be the antepenultimate release to prepare for the long anticipated Git 3.0 which has been vaporware for so long.

UI, Workflows & Features ------------------------

Performance, Internal Implementation, Development Support etc. --------------------------------------------------------------

Fixes since v2.56 -----------------