It's Magit! A Git Porcelain inside Emacs ========================================= Magit is an interface to the version control system Git, implemented as an Emacs package. Magit aspires to be a complete Git porcelain. While we cannot (yet) claim that Magit wraps and improves upon each and every Git command, it is complete enough to allow even experienced Git users to perform almost all of their daily version control tasks directly from within Emacs. While many fine Git clients exist, only Magit and Git itself deserve to be called porcelains. For more information about Magit, see https://magit.vc. Magit needs your help ===================== If Magit helps you be more productive, then please consider backing the fundraising campaign on Kickstarter. Thanks! <3 https://www.kickstarter.com/projects/1681258897/its-magit-the-magical-git-client?ref=ej621y Magit v2.11.0 Release Notes =========================== Released 13th September 2017 by Jonas Bernoulli. I am pleased to announce the release of Magit version 2.11.0, representing 303 commits by 26 contributors over six months. Also see https://emacsair.me/2017/09/12/magit-2.11. Changes since v2.10.3 --------------------- * The popup `magit-remote-popup' now exposes the `-f' switch for `git remote add', which allows the user to control whether information from the remote is fetched after the remote is added. The default behavior is still to fetch after adding a remote (i.e., the switch is enabled by default). #2997 * Added option `magit-list-refs-sortby' to allow more control over the order of refs in prompts. #2872 * The Magit wrappers around the default Emacs completion functions now override the default behavior of alphabetically sorting choices when displaying them in the "*Completions*" buffer. In repositories with many release tags, the new behavior prevents completion prompts from being dominated by version tags instead of branch names. #2925 * The commands `magit-git-command', `magit-git-command-topdir', `magit-shell-command', and `magit-shell-command-topdir' now use `read-shell-command' to read the command and a shell to run it. Packages like `pcmpl-git' and `bash-completion' can now be used to get command-line completion when using these commands. #2951 * The commands `magit-git-command' and `magit-git-command-topdir' can now call arbitrary commands. The initial-value when reading the command is "git ", and you can remove that to call something else. #2951 * Added option `magit-shell-command-verbose-prompt'. #2951 * The function `magit-branch-or-commit-at-point' now offers the appropriate default choice in a `magit-merge-preview-mode' buffer and in blob-visiting buffers. #3039, #3066 * On Travis tests are now run against all supported Emacs releases, as well as against snapshots of the `master' and `emacs-25' branches. #3046 * Added command `magit-debug-git-executable'. #3044 * Added new function `magit-display-file-buffer-other-window' to be used as `magit-display-file-buffer-function'. * Added `--mainline' switch to `magit-revert-popup'. #3018 * Added `magit-file-checkout' to `magit-reset-popup'. #3052 * When a revision is shown from a log buffer, the revision buffer now inherits the file restriction of the log buffer. #3056 * Added new command `magit-diff-toggle-file-filter'. #3062 * Added new option `magit-use-sticky-arguments' that provides more control over how diff and log commands reuse arguments from existing buffers. #3074 * Added imenu support in log, revision, and status buffers. #3022 * Added command `magit-abort-dwim` to abort the current operation. Depending on the context, this will abort a merge, a rebase, a patch application, a cherry-pick, a revert, or a bisect. #3017 * The command `magit-clone' now suggests a directory name that more closely follows `git clone' when no directory is given. #3079 * The commands `magit-subtree-add', `magit-subtree-pull', and `magit-subtree-push' now offer more completion candidates. #3081 * The log buffer now shows the line range restriction (i.e., `-L' argument) in its header. #3075 * Added new functions `magit-repolist-column-branches' and `magit-repolist-column-stashes', which insert the count of branches and stashes into submodules and repository list buffers. By default they are used in submodule lists but not in the repository list. * Text inside brackets in commit messages (including when shown in a log) are now highlighted using face `magit-keyword'. * Invocations of git are cached over the whole body of `magit-run-git', not just during the status buffer refresh. This should make staging and unstaging slightly faster. #3096 * When reading a value for the `--reuse-message' option, the popup `magit-commit-popup' now prompts with all ref names, offering `ORIG_HEAD' as the default if it exists. #3110 * Added bookmark support in status, refs, log, reflog, stashes, cherry, diff, revision, stash, and submodule-list buffers. #3113 * Added new function `magit-insert-modules', a wrapper around the existing `magit-insert-modules-*' functions. Also added options `magit-module-sections-hook' and `magit-module-sections-nested', to allow tuning the behavior of this function. #3141 * Renamed function `magit-insert-submodules' to `magit-insert-modules-overview' for consistency with other `magit-insert-modules-*' functions. #3141 * Inserting module sections is much faster now. #3141 * Added `--no-verify' switch to `magit-rebase-popup'. #3144 * The `--no-verify' switch in `magit-commit-popup' is now bound to "h" instead of "n" for consistency with `magit-push-popup' and `magit-rebase-popup'. #3144 * Added support for the file "EDIT_DESCRIPTION", which is used instead of "BRANCH_DESCRIPTION" for editing a branch's description as of Git 2.13.0. #3149 Fixes since v2.10.3 ------------------- * Rebasing was sometimes interrupted by an error about the index lock already being held. This happened because VC asynchronously checks for files with conflict, which involved using a git command that grabs the lock. Magit now redefines that VC command to use a git command that does not grab the lock. #2708, debbug#21559 * Adding an untracked subdirectory as a submodule failed if a remote was not configured for the subdirectory repository. #3047 * Parsing the log buffer failed if the log displayed a ref that contained parentheses in its name. #3028 * Parsing the `git show' and `git log' output for a signed commit failed with the Git variable `log.showSignature' enabled. #3061 * When deleting the current branch, `magit-branch-delete' did not ask for confirmation in some cases. #3058 * When using a non-standard `magit-display-file-buffer-function' that does not select the window used to display the buffer, then the point in that window was not adjusted. #3082 * `git-rebase-mode' did wrongly assume that there is no space after the comment character in action lines that are commented out. #3085 * The command `magit-show-commit' mistakenly displayed a tag's commit when point was on a branch with the same name. #3098 * The command `magit-log-buffer-file' miscalculated line numbers from the region. #3075 * Staging a link failed when it points to a repository. * When setting the upstream of a branch that isn't the current branch, the user was asked what branch to use as the upstream of the current branch anyway, even though the correct branch would then be modified. * When deleting a branch that is merged into the current branch but not into its own upstream branch, then the user was not offered to force the deletion, causing it to fail. #3107 * With `find-file-visit-truename' set to a non-nil value, the commands `magit-status' and `magit-init' failed to detect when their directory argument was a symlink that resolved to the output of `magit-toplevel'. #3115 * Using an url instead of a remote name as `branch..remote' was not properly supported, causing issues when trying to pull or push. #3116 * The log margin displayed invalid information for cherries. #3163 This release also contains the fixes described in the v2.10.{1,2,3} release notes, as well as other minor improvements, bug fixes, typo fixes, and documentation fixes. Authors ------- 148 Jonas Bernoulli 93 Kyle Meyer 15 Damien Cassou 15 Noam Postavsky 5 Basil L. Contovounesios 3 Justin Guenther 2 Alex Kost 2 Duianto Vebotci 2 Radon Rosborough 2 Štěpán Němec 1 Adam Benanti 1 Allen Li 1 Ben North 1 Erik Anderson 1 Eyal Lotem 1 Fabian Wiget 1 Ioan-Adrian Ratiu 1 Jeremy Meng 1 Justin Burkett 1 Justin Thomas 1 Kévin Le Gouguec 1 Marc Sherry 1 Mark Karpov 1 Mark Oteiza 1 Sean Whitton 1 Yuri Khan