Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

Magit for non-Emacs users #2954

Open
tarsius opened this Issue Jan 11, 2017 · 1 comment

Comments

Projects

Goals ★★★ in Year of Magit

2 participants
Owner

tarsius commented Jan 11, 2017 edited

Usually when Git comes up on Hacker News there's a (often large and usually off-topic) sub-thread on the subject of "if only someone implemented a sane interface to Git that is just as powerful but more intuitive and pleasant to use".

Well... I think that's Magit. Occasionally an Emacs user mentions Magit in response, and then another happy Magit user echos the sentiment how Magit is a game changer. But there is little engagement from people who don't already use Magit. So it's not that all non-Emacs users never heard of Magit, but that they also hear Emacs and then quickly look away again.

TODO add quotes

Interlude

This issue might at some point be turned into a blog post. Consider it a draft.

(Also right now, it is an incomplete draft).

Personas

Vim users

This [ignoring Magit because it is an Emacs extension] to some extend even applies to our friends the Vim users. For every Emacs user praising Magit there's also a Vim user mentioning that Vim has that too, it's called Fugitive.

But Fugitive is nothing like Magit. While I've never used it, I am sure it is nice, and an improvement over doing everything on the command-line. Never-the-less there is no doubt that Magit plays in a different league entirely. The league of essentially complete version control interfaces, which is occupied by only actual version control systems -- and Magit. There's no way you can implement that in Fugitive's ~3000 lines of code, not even if you are the Pope.

I believe it is easier for Vim users to give Magit a try, than for anybody else (who isn't using Emacs already). And indeed this is happening!

TODO add quotes

Vim users have it easier for at least these reasons:

  • Vim users already know that there can be more in an editor than meets the eye, and that just because something is old and boring looking that doesn't automatically make it any less powerful and crusty.

  • Spacemacs might not give you the full Vim experience, but it comes pretty close, or so I have heard. So giving Emacs and Magit a try is fairly easy compared to what someone has to go through who has never used Emacs or Vim.

  • For Vim users who don't want to use Spacemacs, there's also plain Evil and evil-magit.

  • Also Magit's key bindings (without any adjustments made specifically for Vim users) have been described as Vim-like by some. Which is correct in the sense that most key bindings are a single mnemonic key press. (However I do not agree that Magit's key bindings therefore are non-idiomatic as far as Emacs key bindings go - there's precedence for such bindings, see Dired.)

Former and part-type Emacs users

The big question is: "Is Magit useful for people who don't use Emacs as editor/ide?", and it seems useful to see what people who don't live in Emacs have to say on the matter.

TODO add quotes

Users who use a GUI and a little bit command-line Git

Users who have embraced command-line Git

Users of Acme

http://acme.cat-v.org/

How hard is it really to try Magit?

Above we answered "Is Magit useful for people who don't use Emacs as editor/ide" with "yes". The next question then is how easy it is to learn enough Emacs to be able to use Magit.

Difficulties

Planned remedies

@tarsius tarsius added the wip label Jan 11, 2017

@tarsius tarsius added this to Primary goals in Year of Magit Mar 26, 2017

@tarsius tarsius removed the wip label Apr 23, 2017

mgsloan commented Sep 20, 2017 edited

I've thought about this before, magit is one of the main things keeping me from switching back to, say Sublime Text. Sometimes I get frustrated with Emacs performance / extensions not being very async, and ponder jumping ship. I'd like to have that option while still being able to use magit.

This does require some changes, I think one of the things that makes magit really nice is the integration with emacs buffers. Being able to jump right to a conflict, being able to jump right to a hunk, is huge. Knowing when files are unsaved and prompting to save, etc.

I think the ideal solution to this would be something like language server protocol, but inverting control. Instead of allowing the editor to query information from a language server, it would allow some functionality of the editor to be driven externally.

For the magit use-case, the absolutely necessary feature would be to jump to a particular file + line. Beyond this, it seems like the following would be useful:

  • Ability to ask the editor "which buffers are open in this particular directory, which are dirty?"
  • Ability to ask editor to save particular buffers
  • Ability to ask the editor to update a buffer to the filesystem contents if it doesn't have unsaved changes (though, many editors will do this automatically)

Thoughts on these? Is there anything else it would need? Could also consider allowing commit message editing in the other editor.

I think this would be a great thing to have beyond just the use-case for magit. Some things I've wanted this for in the past:

  • Browser plugin that opens github lines in your editor
  • Navigate to a source line of code from text in your terminal (e.g. in error messages)
  • Standalone "code navigation" / explanation utility which also allows navigating the editor, or vice-versa, getting info about current selected thing in the editor
  • Log analysis utility that makes your editor jump to the line that generated the log message
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment