Magit v2.2.0 Release Notes
==========================

Released 16 August 2015 by Jonas Bernoulli.

We are pleased to announce the release of Magit version 2.2.0,
representing 321 commits by 19 people over 6 weeks.

I would like to thank Kyle Meyer and Noam Postavsky for joining
the developer team and helping me with this release. -- Jonas

Changes since v2.1.0
--------------------

* The Elpa packages `with-editor' and `magit-popup' now depend on the
  package `async' and turn on the mode `async-bytecomp-package-mode'.
  If available, the mode is turned on even when these packages have
  not been installed from an Elpa archive.  It is being turned on in
  both of these libraries because any one of them might be the first
  package from the Magit repository that is being updated.

  It is possible to prevent the mode from being turned on when loading
  these libraries by setting `async-bytecomp-allowed-packages' to nil
  before loading them.  If you do that, then you must mention that you
  have done so when reporting a bug (which might therefore be due to
  miscompiled files).

  Turning on `async-bytecomp-package-mode' advises `package--compile',
  instructing it to compile Magit and its dependencies (as well as
  others packages listed in `async-bytecomp-allowed-packages' and
  their dependencies) in a separate Emacs instance.

  Unfortunately it is necessary that we do this because when an old
  version of a package is already loaded when a new version is being
  installed, then the old version sometimes interferes during
  compilation of the new version, leading to miscompiled files.

  This usually does not happen very often, but when updating from
  Magit v1 to v2 then it is expected, which is why users were
  instructed to uninstall the old version before installing v2.1.0.
  Unfortunately many users never saw those instructions, so we have
  no choice but to use this approach to get rid of miscompiled files.

* Two new commands have been added to the diff refresh popup that
  allow the range of the previous diff to be manipulated.
  `magit-diff-flip-revs' swaps the revisions of the range, and
  `magit-diff-switch-range-type' toggles between ".." and "..." range
  types.

* The commands `magit-ediff-show-unstaged', `magit-ediff-show-staged',
  `magit-ediff-show-commit', and `magit-ediff-show-working-tree' have
  been added to the Ediff popup.

* New option `magit-ediff-dwim-show-on-hunks' controls whether calling
  `magit-ediff-dwim' runs a show variant (`magit-ediff-show-unstaged'
  or `magit-ediff-show-staged') rather than `magit-ediff-stage' when
  point is on an uncommitted hunk.

* `magit-diff' and `magit-ediff-compare' no longer prompt the user for
  confirmation when constructing a range from the last and first
  commits selected by a region.  A prefix argument can now be used to
  specify that the diff is between the second revision and the common
  ancestor of both revisions (i.e., the "..." range type is used).

* `magit-ediff-*' variants now limit file choices to those that have
  changed between the revisions of interest.  If only one file has
  changed, this file is used without prompting.

* `magit-diff' and `magit-ediff-compare' now consider the location at
  point when choosing the default for the prompt, and this default
  value usually corresponds with the actions of their DWIM
  counterparts.

* The key in Ediff popup for `magit-ediff-compare' has changed from
  "d" to "r" to be consistent with the key in the diff popup for the
  similarly behaved `magit-diff`.

* Entering a single commit for the range to `magit-ediff-compare' now
  compares the commit with the working tree (like `magit-diff' and
  `git diff') rather than the previous commit.

* The popup `magit-diff-refresh-popup' and its suffix commands and
  helper functions were fixed.  Most importantly file arguments and
  diff-type arguments are no longer lost when this popup is used -
  it only changes those arguments it is supposed to change.  Also
  the popup only lists the arguments which can actually be used in
  the current buffer (in status buffers fewer are supported than in
  diff-only buffers).

* The popup `magit-diff-popup' and its suffix commands now use the
  arguments currently in the `magit-diff-mode' buffer of the current
  repository.  Previously the arguments were always reset to the
  default value of `magit-diff-arguments'.

* The default values of `magit-diff-section-arguments' and
  `magit-diff-arguments' now contain the `--no-ext-diff' switch.

* New popup `magit-log-refresh-popup' allows changing the log
  arguments used in the current buffer.  This allows changing the
  arguments used in a log buffer without having to specify the
  reference(s) again.  And it makes it possible to change the log
  arguments used in the status buffer, which previously required that
  option `magit-log-section-arguments' was customized manually.

* When a log is displayed for the purpose of having the user select
  a commit, then this is now displayed in a buffer separate from the
  regular log buffer.  New option `magit-log-select-buffer-name-format'
  controls the name of that buffer and new option
  `magit-log-select-arguments' controls the arguments.

* The default value of `magit-log-section-arguments' now contains the
  `--decorate' switch.

* `magit-log-buffer-file' respects the log arguments currently in
  effect in the repositories log buffer, or if that doesn't exist the
  default value of `magit-log-arguments'.  Because this command is not
  invoked from the log popup, it's now also possible to turn on the
  `--follow' using a prefix argument.

* Log graphs are no longer shown in color by default, because turning
  the control sequences into faces is very inefficient.  To allow
  users to get back the colorful graphs, the `--color' switch has been
  added to the log popup.

* In the refs manager, `RET' on a local branch again "visits" that
  branch by checking it out (like in v1.4).  With a prefix argument it
  instead "visits" the branch by showing information about other refs
  relative to the visited one (like in v2.1 even without a prefix
  argument).

  When the new option `magit-visit-ref-create' is non-nil, then a
  remote branch is "visited" by creating a new local branch that
  tracks that remote branch, and checking out that local branch.

* To avoid losing any standard functionality, `C-w' and `M-w' now
  fallback to `kill-ring-save' when the region is active.  They also
  work in more places and in some cases copy more useful information
  than before.

* New option `magit-push-always-verify' has been added because changes
  in v2.1 caused many users to accidentally push to `master' instead
  of a remote feature branch as intended.  All users should set this
  option to nil, but only after having read the documentation.  The
  commands that respect this option instruct users to consult its
  documentation.

* Moving through a log using `n' and `p' is now much faster because
  the revision buffer is no longer recreated for each commit along the
  way.  Because Emacs does not support key-down-events this had to be
  implemented using a timer, which has the unfortunate effect that it
  leads to a delay even when only pressing one of these keys briefly
  to move by a single line.  This delay can be adjusted using the new
  option `magit-diff-auto-show-delay'.

* When creating a new branch, first reading the starting point and
  only then the name of the new branch has advantages.  But many users
  disagree, so the option `magit-branch-read-upstream-first' has been
  added.  It defaults to t.

* New commands `magit-wip-log' and `magit-wip-log-current' allow
  showing log for a branch and its wip refs (which the various wip
  modes commit to).

* New command `magit-submodule-deinit'.

* New command `magit-commit-augment' allows the user to pick a commit
  to squash into and edit the squash commit message.

* New push commands `magit-push-implicitly' and `magit-push-quickly'.

* When reading user input, many commands now offer a better default
  choice and better completion candidates.

* All apply variants now use `--3way' when called with a prefix
  argument.

* Log commands now respect the entries in the .mailmap file.

* The command `magit-pull-current' now also fetches tags by default.

* When a file has conflicts then the type of conflict is shown now.

* New option `magit-log-show-refname-after-summary'.

* New section inserter `magit-insert-user-header'.

* New face `magit-section-secondary-heading'.

* New commands `magit-run-gitk-all' and `magit-run-gitk-branches'.
  The existing command `magit-run-gitk' now always calls `gitk'
  without any arguments.

* New commands `magit-shell-command' and `magit-shell-command-topdir'.

This release also contains various documentation fixes, code
clean-ups, bug fixes, and other small to medium improvements.

Authors
-------

   225  Jonas Bernoulli
    67  Kyle Meyer
     8  Noam Postavsky
     3  Mitchel Humpherys
     2  Greg Lucas
     2  Mark Karpov
     2  Yuichi Higashi
     1  Johann Klähn
     1  Josiah Schwab
     1  Kan-Ru Chen
     1  Nicklas Lindgren
     1  Phil Sainty
     1  Richard Kim
     1  Robin Green
     1  Rémi Vanicat
     1  Steven Vancoillie
     1  Thomas Frössman
     1  Ting-Yu Lin
     1  Vineet Naik
