I am excited to announce the release of Magit version 2.11, consisting of 303 commits since the last feature release six month ago. The release notes can be found here.
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.
I am currently running a fundraising campaign on Kickstarter. If it succeeds, then I can work on Magit full-time for a whole year. I am still overflowing with ideas, and depend on your support to realize them.
I would love to work on Magit for at least another year and think that its users would miss out on a lot of significant improvements if I were unable to do so. Magit and I are at a crossroad — either I can intensive my efforts or I have to give up bringing the long time goals to completion that I have been working toward for the past few years.
Magit is still far from fulfilling its potential and now I need your help to get it there. Visit the campaign to learn more about the planned improvements and please consider to make a contribution.
Thanks for your support!
Even just maintaining Magit, without moving in any new directions, is a lot of work. For the last six months I did not have much time to go beyond that, so most of the changes in this release are bug fixes and small incremental changes. Most of that is too boring to be listed here. See the full release notes for details. (That doesn’t mean that I am running out of ideas — far from it.)
Fortunately a few users have stepped up and contributed some new features, including but not limited to the following.
Damien Cassou added support for Imenu in Magit log, revision,
and status buffers. Like in other buffers that support Imenu you
M-x imenu to quickly jump somewhere in the buffer. You
probably want to bind that command to some key.
They have both done an excellent job implementing a feature that has been requested before but that I would probably not have found the time to implement myself any time soon. I would also like to thank Kyle Meyer who not only reviewed these changes but also implemented many changes and fixes himself, and generally helps a lot of with the day to day work such as dealing with bug reports and reviewing pull requests.
The most significant of his changes in this release probably is the
magit-use-sticky-arguments, which he actually proposed
quite some time ago but which I rejected initially. Sometimes it
helps to show some patience when dealing with a stubborn
If you often find that diff and log buffers use arguments that you set earlier but that you did not expect to be reused again, then customize this option to make arguments less “sticky”.
When a revision is shown from a log buffer, then the revision buffer now inherits the file restriction of the log buffer, if any.
Magit’s commands for running arbitrary
git commands (available in
the popup bound to
!) used to be much less pleasant to use than
async-shell-command but some users still preferred
them because of some of the specialization. Now they are just as
async-shell-command but also preserve the
To make full use of that you should use a package like
bash-completion, which add command-line completion to these
Inserting information about submodules into status buffers is much faster now. Some other performance improvements were also made.
Comments on Reddit.