Magit

From Wikipedia, the free encyclopedia
(Redirected from Draft:Magit)
Jump to navigation Jump to search
Magit
Original authorMarius Vollmer
DevelopersJonas Bernoulli, Kyle Meyer, and Noam Postavsky
Repositorygithub.com/magit/magit
Written inEmacs Lisp
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    Type
    • Git client
    • Text editor plugin
    LicenseGPL-3.0-or-later
    Websitemagit.vc

    Magit (/ˈmædʒɪt/ MA-jit or /ˈmʌɡɪt/ MUH-git[1]) is an interface to the Git version control system, available as a GNU Emacs package[2][3] written in Emacs Lisp. It is available through the MELPA package repository,[4] on which it is the most-downloaded non-library package, with over 4.3 million downloads as of September 2024.[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 | edit source]

    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 | edit source]
    File:GNU Emacs showing a Magit buffer.png
    A Magit buffer displaying the Emacs git repository's log

    Magit aims to encapsulate the entire functionality of Git,[14] and has interfaces for workflows such as:[15]

    • 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 | edit source]

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

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

    Forge currently allows for[18]

    • 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 | edit source]

    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]

    There has been interest in including Magit as a built-in feature package in Emacs, but there are issues with obtaining FSF copyright assignment from all contributors to the project.[24]

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

    See also

    [edit | edit source]

    Notes

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

    References

    [edit | edit source]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    8. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    10. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    11. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    12. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    13. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    14. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    15. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    16. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    17. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    18. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    19. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    20. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    21. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    22. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    23. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    24. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    25. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    [edit | edit source]