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