Magit

From Wikipedia the free encyclopedia

Magit
Original author(s)Marius Vollmer
Developer(s)Jonas Bernoulli, Kyle Meyer, and Noam Postavsky
Stable release
3.3.0.[1] / October 4, 2021; 2 years ago (2021-10-04)
Repositorygithub.com/magit/magit
Written inEmacs Lisp
Type
  • Git client
  • Text editor plugin
LicenseGPL-3.0-or-later
Websitemagit.vc

Magit is an interface to the Git version control system (a Git Client), implemented as a GNU Emacs package[2][3] written in Elisp. It is made available through the MELPA package repository,[4] on which it is the most-downloaded non-library package, with over 3.7 million downloads as of February 2023.[5]

Like many graphical user interfaces, Magit provides a visual interface to represent version control actions; however, it uses a keyboard-centric model, and also functions as a text-based user interface.[a] The issue of key-memorization is mitigated through use of a popup menu which displays the actions available to the user[6] — serving as a mnemonic aid.[7]

History[edit]

Magit was created by Marius Vollmer in 2008,[8] with Jonas Bernoulli assuming the role of maintainer in 2013.[9] Since its release, Magit has seen a high degree of community involvement, with 350 individuals[10] having contributed code to this free software project as of September 2020.

In 2018 Magit underwent a Kickstarter funding campaign[11] which aimed to fund the maintainer for a year of work. The fundraising was successful and resulted in the project being the 27th most funded software project on Kickstarter.[12] Since the Kickstarter funded period expired donations are encouraged to support the authors development via direct payments, GitHub's sponsorship program and various other crowdfunding services.[13]

Functionality[edit]

Magit aims to encapsulate the entire functionality of Git.[1] As such, Magit includes interfaces for[14]

  • Cloning a repository, and fetching/pulling from it
  • Staging, unstaging, and discarding changes in the worktree
  • Creating commits and pushing them to a remote
  • Creating branches, and either merging or rebasing onto them
    • Magit makes use of Emacs' Ediff to provide 3-way-merge functionality
  • Browsing and bisecting the commit history
  • Creating and applying patches
  • Adding notes and tags to commits

Forges[edit]

Magit's Forge provides integration with a number of forges,[15] namely GitHub and GitLab.[16]

Partial support is also listed for: Gitea, Gogs, Bitbucket, Gitweb, Cgit, StGit and SourceHut.

Forge currently allows for[17]

  • Fetching topics and notifications
  • Listing topics, issues, pull-requests, notifications, and repositories
  • Creating issues, pull-requests (PRs), PR from an issue, PR reviews, and forks

Reception[edit]

There has been interest in including Magit in Emacs, but there are issues with obtaining FSF copyright assignment from all contributors to the project.[18]

Magit is favourably covered in a number of blog posts and tutorials and a talk delivered by former Emacs' maintainer John Wiegley.[19][20][21]

Magit is included by default in the Emacs configuration frameworks Spacemacs and Doom Emacs.[22][23]

As of February 2023, Magit is the most starred Emacs package on GitHub.[24]

See also[edit]

Notes[edit]

  1. ^ In part this is a consequence of being designed for GNU Emacs, which itself can operate as a TUI.

References[edit]

  1. ^ a b Bernoulli, Jonas. "It's Magit! A Git Porcelain inside Emacs". magit.vc. Retrieved 2022-01-02.
  2. ^ Corbet, Jonathan (July 12, 2017). "Emacs and Magit". LWN.net.
  3. ^ "EmacsWiki: Magit". Retrieved 2020-09-17.
  4. ^ "magit". Milkypostman's Emacs Lisp Package Archive. Retrieved 2020-09-20.
  5. ^ "Current List of Packages". Milkypostman's Emacs Lisp Package Archive. Retrieved 2020-09-20.
  6. ^ "Transient commands". GitHub. Retrieved 2020-09-17.
  7. ^ Bernoulli, Jonas (2017-09-01). "Magit, the magical Git interface". EmacsAir.
  8. ^ "magit/magit.el". GitHub. Retrieved 2020-09-17.
  9. ^ "Magit 1.4.0 Release Notes". GitHub. 2015-07-01. Retrieved 2020-09-20.
  10. ^ "GitStats - magit". magit.vc. Retrieved 2022-03-08.
  11. ^ "It's Magit! The magical Git client". Kickstarter.
  12. ^ "Discover » Technology / Software » Most Funded — Kickstarter". Retrieved 2020-09-17.
  13. ^ "Please help making it better".
  14. ^ "Top (Magit User Manual)". magit.vc.
  15. ^ Heartman, Thomas (16 March 2020). "Improve your workflow with Forge".
  16. ^ "Forge User and Developer Manual". magit.vc.
  17. ^ "Usage (Forge User and Developer Manual)". magit.vc.
  18. ^ Stallman, Richard (5 July 2017). "Re: In support of Jonas Bernoulli's Magit". emacs-devel (Mailing list). Retrieved 2020-09-19.
  19. ^ Patil, Sachin. "How to use Magit to manage Git projects". opensource.com.
  20. ^ Bachmann, Gunther. "Magit – A textual git interface". itemis.
  21. ^ Wiegley, John. "It's Magit!". YouTube.
  22. ^ "Spacemacs - source control layer". GitHub. Retrieved 2020-09-19.
  23. ^ "Doom Emacs - default modules file". GitHub. Retrieved 2020-09-19.
  24. ^ "GitHub Search for "stars:>1000", Emacs lisp, sorted by most stars". GitHub. Retrieved 2020-09-19.

External links[edit]