E macsAir

Collecting frequent-committer miles

Magit 2.8 released

I am excited to announce the release of Magit version 2.8, consisting of 124 commits since the last feature release three months ago. The release notes can be found here.

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.

Outlook

This summer I was away from my computer for about six weeks, so this release took a little longer than usual. I intend to concentrate on bug fixes for the next two months, so the next feature release likely will take a little longer too.

We are getting much fewer feature requests now than we used to, which hopefully means that Magit now finally handles all the immediate needs of most users. But that doesn’t mean that I am running out of ideas. On the contrary, this will allow me to focus on long overdue and more involved changes again, which take longer to implement but when finished pay off more than all those little changes that have been happening on the fringe.

New features

Improved window handling

In the past, users who wanted Magit’s status buffer to take up the full frame had to rely on hacks to achieve what they wanted. Several blog posts have been floating around which explained one way or another to achieve that.

Starting with this release you can remove these kludges and simply choose between several ready-made functions each of which handles Magit’s windows in a distinct manner. There’s even more than one full-screen variant available to choose from now.

I implemented the abstraction which allows users to easily change how Magit displays its windows by simply defining a single function several releases (v2.3) and months ago, and hoped that users would contribute such implementations. Unfortunately that never happened. Now Kyle Meyer, one of my co-maintainer, has implemented the variants I suggested last year and a few more.

To pick a variant, customize the option magit-display-buffer-function. You can read more about the available variants in the manual, or directly in the Custom interface.

When I first added magit-display-buffer-function, that caused some hacks to break, because they relied on implementation details. To avoid something similar from happening in the future, we have decided to version the new display variants. The function names all have the suffix -v1. If we should decide that one of them could be improved, then we will do so by adding a new version instead of changing the older implementation.

Listing repositories

The new command magit-list-repositories shows a list of your local repositories in a separate buffer. Before it can do that you have to tell Magit where your repositories are located by customizing the option magit-repository-directories.

The list buffer can be refreshed by pressing g, and RET takes you to the status buffer for the repository on the current row.

The columns to be displayed can be selected using the new option magit-repolist-columns.

For more information see the documentation.

Note that you can also jump directly to the status buffer of any known repository by calling magit-status with a prefix argument.

Listing submodules

The new command magit-list-submodules shows a list of the current repository’s submodules in a separate buffer.

The list buffer can be refreshed by pressing g, and RET takes you to the status buffer for the submodule on the current row.

The columns to be displayed can be selected using the new option magit-submodule-list-columns.

For more information see the documentation.

Note that you can also display information about a repository’s submodules in the super-repositories own status buffer. To learn how to do that follow the above link.

Other improvements

As usual, this release also adds several other new commands (magit-branch-orphan and magit-log-move-to-parent) and options (magit-log-output-coding-system, magit-no-message, magit-bisect-show-graph), and improves existing commands (magit-stage, magit-branch-*, magit-log-*, magit-diff-*, magit-ediff-*). For details about these and other changes, including bug fixes, see the full release notes.



Comments on Reddit.