The release of Git 2.9.0 was announced this week, and it brings with it some neat features. There are plenty of features and fixes in the release's official changelog, but here are a few of the most exciting and interesting:

--compaction-heuristic is an experimental feature for diff that attempts to find logical "hunks" when changes are made (there's a good example here).

Rename detection, an old Git feature, is now enabled by default.

A new diff-highlight script allows individual changes within lines to be emphasized.

Mark-up for the top-level README.md now shows CLI commands as distinct from body text.

The jobs option, released in Git 2.8.0, is now available not just for fetching submodules, but for cloning or updating submodules.

Git no longer allows (by default) merging branches without a common base.

git log accounts for indentation in commit messages, which will now keep tables and other position-dependent ASCII properly aligned.

git rebase allows an -x option for full-branch testing.

Git now allows you to set CL config options for submodule fetches.

Hook scripts can now be configured to have custom paths, so keeping these scripts in one place for multiple repositories is now possible.

Git is now friendlier with Perforce with the git-p4 tool, which let's you use the Git client for a Perforce project by mapping P4 author names to Git author names.

git describe and its --contains option became more user-friendly, now finding the oldest tag containing the commit.

The commit.verbose configuration for git commit now acts the same as the CLI --verbose option.