Magit v2.4.0 Release Notes
==========================

Released 18 January 2016 by Jonas Bernoulli.

We are pleased to announce the release of Magit version 2.4.0,
representing 269 commits by 14 people over 12 weeks.

Also see http://emacsair.me/2016/01/18/magit-2.4.

Changes since v2.3.0
--------------------

* The new mode `magit-auto-revert-mode', a magit-specific globalized
  variant of `auto-revert-mode', replaces the old implementation, which
  was configured using the option `magit-revert-buffers'.  The new mode
  is enabled for all users by default.  It may be disabled before
  loading magit by setting `magit-auto-revert-mode' (or the obsolete
  alias `magit-revert-buffers') to nil.  To disable the mode after
  loading magit, a call to (magit-auto-revert-mode -1) is required.
  #2474

* The option `magit-refresh-status-buffer' was added, allowing users
  to prevent automatic refreshes of the status buffer for performance
  reasons.

* All of Git's push-related variables are now honored.  #2414

* In addition to the upstream branch, the push-remote (configured
  using `branch.<name>.pushRemote' or `remote.pushDefault') is now
  also fully supported.  #2414

* The status buffer now features up to four logs listing unpulled and
  unpushed commits.  Two for the upstream and two for the push-remote.
  #2414

* The branch popup now shows the most important Git variables that are
  in some way related to branches.  The values of these variables can
  now be conveniently changed from that popup.  #2414

* The fetch, pull, push, and rebase popups now feature an action which
  acts on the push-remote, another which acts on the upstream, and yet
  another which acts on any other source or target.  For each of these
  actions the respective branch is shown in the popup.

  The actions in the push popup are displayed even if the respective
  variables are unset - they then offer to set these variables before
  pushing.  Setting `magit-push-current-set-remote-if-missing' to nil
  disables this.

  Many key bindings were changed for consistency and safety reasons.
  Likewise many commands were renamed and their behavior was adjusted.
  Some new commands, related to the push-remote, were added.  #2414

* The command `magit-push-implicitly' was removed from the push popup.
  The command's doc-string explains how to put it back.  If these
  instructions are followed, then the popup shows what will happen if
  the command is used.  #2453

* The command `magit-push-to-remote' was added.  The command's
  doc-string explains how to add it to the push popup.  #2453

* The option `magit-push-always-verify' was removed.  That was only a
  temporary kludge to keep users from shooting themselves in the foot.
  This is no longer necessary because one now always sees where one is
  about to push to.  #2414

* The popup command `magit-pull-and-fetch-popup' was added as a
  possible replacement for the separate `magit-push-popup' and
  `magit-fetch-popup'.  #2452

* The option `magit-branch-prefer-remote-upstream' was added for users
  who prefer to always use remote branches as upstreams.  #2447

* The options `magit-clone-set-remote.pushDefault' and
  `magit-remote-add-set-remote.pushDefault' were added.  #2447

* When Git is run for side-effects and exits with a non-zero status,
  then the respective error message is now inserted into the status
  buffer.  This should help those users who do not see that message
  when it is being displayed in the echo area.

* Popups gained support for a new event type `:variable', which can be
  used to change the value of Git variables.  This can only be used in
  combination with Magit (just `magit-popup.el' by itself is not
  sufficient).  #2409

* The backward-compatibility kludge `magit-branch-manager' has been
  removed.  The one and only binding to show the refs buffer now is
  "y"; the "b v" binding has been removed.

* The command `with-editor-finish' now runs the new hook
  `with-editor-post-finish-hook'.

* The command `magit-diff-visit-file' now runs the new hook
  `magit-diff-visit-file-hook'.

* When the upstream branch or push remote is configured but the
  respective branch does not actually exist, then that is now reported
  in the header of the status buffer.  #2390

* The header line about the upstream branch in the status buffer is
  now prefixed with either "Merge" or "Rebase", depending on the value
  of `branch.<current-branch>.rebase'. #2390

* `magit-define-popup' learned two new arguments, `:setup-function' and
  `:refresh-function'.  These arguments should be used instead of the
  MODE argument, which is now deprecated.  #2389

* Negative text properties are no longer faked; that was just too ugly
  and inefficient.  Since v2.1.0 Magit no longer sets the background
  color for any faces except for those related to diffs.  Third-party
  themes which still set the background color of non-diff faces have
  to be adjusted, because the background color of these faces would be
  shadowed by the highlighting of the current section.  This does not
  apply to diff-related faces because diff sections are highlighted
  differently from other sections.  #2387

* The commands `git-rebase-move-line-up' and `git-rebase-move-line-down'
  have been extended.  When a region is active, they now operate on
  all lines touched by the region, not just the current line.  In
  addition, a numeric prefix can now be given to specify how many
  lines the current line or selection is moved across.

* The option `magit-popup-display-action' was added.

This release also contains the changes described in the v2.3.1 release
notes, as well as various other documentation fixes, code clean-ups,
bug fixes, and other small to medium improvements.

Authors
-------

   226  Jonas Bernoulli
    22  Kyle Meyer
    10  Noam Postavsky
     1  Carl Lieberman
     1  Damien Cassou
     1  David L. Rager
     1  John Mastro
     1  Lele Gaifax
     1  Michael Heerdegen
     1  Miloš Mošić
     1  Raimon Grau
     1  Sylvain Rousseau
     1  Syohei Yoshida
     1  Zach Latta
