Magit v2.5.0 Release Notes
==========================

Released 30 January 2016 by Jonas Bernoulli.

We are pleased to announce the release of Magit version 2.5.0,
representing 78 commits by 4 contributors over 2 weeks.

Also see http://emacsair.me/2016/02/10/magit-2.5.

Changes since v2.4.0
--------------------

* The library `with-editor.el' reincarnated as a separate repository.

  It was already available as a separate package, and since it can be
  of use for packages that have absolutely nothing to do with `magit'
  it makes sense to maintain it separately.  That wasn't done before
  because that would have made it harder to change it and its users
  within the magit repository in parallel.  I expect there will be
  few such changes in the future.

* Added new library `magit-submodule.el'.  It contains code that was
  previously spread across various libraries.

* Added new option `auto-revert-buffer-list-filter' and redefined
  `auto-revert-buffers' from `autorevert.el' to use it.  Added new
  predicates `magit-auto-revert-buffer-p' and the more restrictive
  `magit-auto-revert-repository-buffer-p', which are both intended
  to be used as potential value of the option.

  For now the option defaults to `nil', but that might change in a
  future release.  When Magit explicitly calls `auto-revert-buffers'
  (as opposed to when that is called due to a file notification event
  or by a timer), and `auto-revert-buffer-list-filter' is `nil', then
  it is let-bound to `magit-auto-revert-repository-buffer-p'.

  Users who use Tramp and experience delays, should consider setting
  the option to `magit-auto-revert-repository-buffer-p'.

* By default, invoking `magit-unstage' on a committed change now
  performs an action which is somewhat similar to unstaging.  The
  change is reverted in the index, but not the working tree.  This
  allows extracting changes from HEAD.

  Setting the new option `magit-unstage-committed' to nil, disables
  this behavior.  Attempting to unstage a committed change would then
  result in an error again.

* Because file notifications may arrive with a delay, the option
  `magit-auto-revert-immediately' now defaults to `t' even when file
  notifications can be used,

* Like `magit-refresh' already did, `magit-refresh-all' now runs the
  hooks `magit-pre-refresh-hook' and `magit-post-refresh-hook'.

* The heading of the section which lists commits that exist in the
  current branch but not in its upstream was changed from "Unpushed
  to <upstream>" to "Unmerged into <upstream>", because one usually
  should merge into that branch instead of pushing to it.

* Added new commands `magit-remote-set-head' and
  `magit-remote-unset-head'.

* By default `magit-clone' now deletes the symbolic-ref "origin/HEAD"
  right after running `git clone', which insists on creating it.

  The new option `magit-clone-set-remote-head' can be set to `t' to
  go back to keeping that symbolic-ref.  We default to removing it,
  because it does not actually get automatically updated when the
  HEAD of the remote changes, which makes it rather pointless.

* Added new option `magit-prefer-remote-upstream' which controls
  whether commands which read the upstream or starting-point from
  the user would rather offer a local or a remote branch as default
  completion candidate.

* Added the switch `--cover-letter' to `magit-patch-popup', and taught
  `magit-format-patch' to immediately open the letter in a buffer.

* Added new option `++order' to the various log popups.  This option
  and its value are converted to `--VALUE-order' before calling `git'.
  This option was added instead of the switches `--author-date-order',
  `--date-order', and `--topo-order' because adding all three would be
  too noisy and because they are mutually exclusive.

Fixes since v2.4.1
------------------

* Creating a stash in a secondary working tree failed if no other
  stash already existed in the repository.

* Creating a Magit buffer failed if `uniquify-buffer-name-style's
  value is `nil'.

* Resetting a branch to an arbitrary commit caused its upstream
  configuration to be mangled.

* Resetting a branch to another branch caused the former to be
  configured as the upstream of the latter.  That behavior was
  introduced by accident when the argument `--track' was replaced with
  the variable `branch.autoSetupMerge' in the popup.  Because it would
  be undesirable to restore the `--track' argument in the popup, one
  now has to use a prefix argument to set the upstream while resetting.

* The manually set state of the margin in log and reflog buffers was
  not preserved and instead reset to the default state when a command
  was invoked which changes what log/reflog is being displayed.

* Pressing RET on a variable in a popup caused an error.

This release also contains the fixes described in the v2.4.1 release
notes, as well as various typofixes, documentation updates, code
clean-ups, bug fixes, and other small improvements.

Authors
-------

    62  Jonas Bernoulli
     9  Kyle Meyer
     4  Noam Postavsky
     3  Alex Dunn
