From fb3e25dd776d83d5cb459a183bc128c652375d9e Mon Sep 17 00:00:00 2001 From: Jonas Bernoulli Date: Wed, 1 Jul 2015 22:26:49 +0200 Subject: add release notes, bump version --- Documentation/RelNotes/1.4.0.txt | 2 +- Documentation/RelNotes/2.1.0.txt | 414 ++++++++++++++++++++++++++++++++++++++- Makefile | 6 +- lisp/git-commit.el | 2 +- lisp/magit.el | 2 +- 5 files changed, 411 insertions(+), 15 deletions(-) diff --git a/Documentation/RelNotes/1.4.0.txt b/Documentation/RelNotes/1.4.0.txt index 450c3d7..f0f8d9e 100644 --- a/Documentation/RelNotes/1.4.0.txt +++ b/Documentation/RelNotes/1.4.0.txt @@ -4,7 +4,7 @@ Magit v1.4.0 Release Notes Released 1 April 2015 by Jonas Bernoulli. This release sits in the middle of a commit marathon that lasted for -more than 4400 commits. +more than 4700 commits. When I became Magit's new maintainer during the summer of 2013 Magit was already a big success, but underneath its shiny surface it was diff --git a/Documentation/RelNotes/2.1.0.txt b/Documentation/RelNotes/2.1.0.txt index cc94d4b..90a4e53 100644 --- a/Documentation/RelNotes/2.1.0.txt +++ b/Documentation/RelNotes/2.1.0.txt @@ -2,50 +2,446 @@ It's Magit! A Git Porcelain inside Emacs ========================================= Magit is an interface to the version control system Git, implemented -as an Emacs package. For more information see http://magit.vc. +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 http://magit.vc. Magit v2.1.0 Release Notes ========================== -UNRELEASED +Released 1 July 2015 by Jonas Bernoulli. + +This release marks the end of a commit marathon that lasted for more +than 4700 commits. It is the first major release in over two and a +half years. The last major release was 1.2.0, which was released +under old leadership. Version 1.4.0, which I released earlier this +year, for the most part consisted of changes that prepared for this +release (so you might want to read the respective release notes too). + +This release comes with many new and exciting features, but the most +important change is the massive increase in consistency both in the +user interface and the internal abstractions. + +Magit always provided a very intuitive staging interface, which is +vastly superior to `git add --interactive'. This release extends this +to other apply variants. Starting with this release, other areas have +also begun to be more than just incremental improvements over what Git +itself provides. But this is still limited to certain features which +have gotten more attention than others (most prominently rebasing). + +Interlude +--------- + +The code base is finally in a state that allows me to concentrate on +implementing my vision of what version control could be like. But +this will only be possible if, unlike during the last two and a half +years, I am being paid for my work. + +I intend to run a fund-raising campaign, but you can already donate +now (see http://magit.vc/donations.html). I am also looking for +corporate sponsorship and/or employment. One area where Magit +actually lags behind other Git clients is integration with Git hosting +platforms and code review tools. I hope that these platforms have an +interest in being supported by the best Git client and are willing to +pay for it. + +I am very interested in a job that would let me work on Magit *and* on +other projects, which would benefit from the skills I have acquired +integrating two complex systems and dealing with all the social and +technical challenges that arise when running a popular project. Changes since v1.4.0 -------------------- + * A new manual has been added. It's much more comprehensive than the + old manual and instead of just documenting the various commands and + options, it also explains concepts and plumbing functions, and + comes with extensive indices for commands, functions, and options. + + Actually three new manuals were added; the packages `magit-popup' + and `with-editor' are documented in separate manuals. + + The manuals are written in Org mode and then exported to Texinfo. + + * Performance is much better now. In most cases this was achieved by + delaying work until it is actually needed. Most importantly diffs + are only partially washed until being fully expanded. Some + features come in a fancy and in a fast variant; when that is the + case, we now usually default to the fast variant. + + * Many options can now be set on a per-repository basis, and the + manual describes how to do so. (Actually this was always possible + but, because it was undocumented, nobody did it.) It's possible to + define "repository classes", e.g. "huge repositories", and then add + the respective repositories to that class. This is very useful in + order to turn off certain features only in repositories where they + would have a negative impact on performance, without having to do + it for each repository individually. + + * Many faces have been simplified. Most importantly, section heading + faces no longer set a background color (except for hunk headings) + and instead just use the default background. Refname faces no + longer set the background color or the box property. + + * Many, probably the majority of, functions, variables, and faces + have been renamed, which was necessary because there was very + little consistency before. + + Most importantly, the names of commands and options now begin with + a prefix that includes the name of the respective git sub-command. + For example, the names of all commands and options related to + diffing now begin with `magit-diff-'. + + Many plumbing functions and variables were also renamed. In some + cases, that also lead to shared prefixes, such as `magit-process-', + `magit-mode-', `magit-git-', and `magit-insert-'. But many + plumbing functions and variables continue to use names whose only + common part is the `magit-' prefix. + + Future renames will be performed at well defined times and obsolete + function/variable definitions will be provided for backward + compatibility. No renames are planned at present. + + * The external libraries `git-commit-mode.el' and `git-rebase-mode.el' + are no longer required and have to be uninstalled because they + conflict with their successors `git-commit.el' and `git-rebase.el', + which are now maintained inside the Magit repository instead of the + Git-Modes repository. + + The library `git-commit.el' can be used without Magit, so it is + distributed as a separate Elpa package. However, `git-rebase.el' + now depends on several Magit libraries and is therefore distributed + as part of the `magit' package. + + * The library `magit-key-mode.el' was removed and replaced with + `magit-popup.el'. The new implementation is much more flexible and + easier to use than the old one. Major new features include setting + default arguments directly inside the popup and macros for defining + new popups and extending existing popups. + + This new library can also be used by packages that are not related + to Magit and is therefore available as a separate Elpa package. + + * The library `with-editor.el' was added. Its purpose is to use the + emacsclient as $GIT_EDITOR when git is started as a subprocess and + requires an editor. This is used while committing and rebasing. + This also works over Tramp, where a "sleeping editor" shell script + is used to communicate over standard output instead of a socket + like the emacsclient does. + + The `1.4.0' release already supported this, but this release splits + this feature into a separate library. And now that it is a separate + library, it can also be used by packages that are not related to + Magit. `with-editor.el' is distributed as a separate Elpa package. + + * All libraries are now located in the new `lisp/' subdirectory. + + * The library `magit.el' has been split into many new libraries. + The code base is now much better organized. Together with the + description of plumbing commands in the manual, this should make it + much easier for contributors to get started. + + * The library `magit-wip.el' has been rewritten from scratch and no + longer depends on the external and unmaintained shell script from + https://github.com/bartman/git-wip. + + * There are now three different modes that commit to the + work-in-progress refs before/after certain events, and in addition + to the old working tree wip refs, these modes now also commit to + index wip refs. When these new modes are turned on, Git's + protection of committed (but dangling) changes is effectively + extended to uncommitted changes (which some exceptions). These + modes are not enabled by default due to performance concerns. + + * The library `magit-blame.el' has been rewritten from scratch. The + new implementation can blame recursively, jump to the next/previous + chunk from the same commit, replace headings with separator lines, + scroll the revision buffer for the chunk at point (like log buffers), + and fine-tune the arguments for `git blame' using a popup. + + * The new library `magit-ediff.el' replaces the old Ediff support. + The new implementation comes with a dwim command and a popup, and + it relies less on high-level functions provided by VC and Ediff + itself, because many of those turned out to be unsuitable. + + * The popular third-party library `dash.el' is now required. This + is the only mandatory external dependency now, except for Git and + Emacs themselves, of course. + + * When using Ido inside Magit, users now have to install the + third-party library `ido-completing-read+.el'. This is necessary + because the function `ido-completing-read', which is part of the + built-in library `ido.el', is not a sufficient drop-in replacement + for `completing-read'. + + * The new macro `magit-insert-section' replaces `magit-with-section'. + The macros `magit-cmd-insert-section' and `magit-git-insert-section' + were removed without a direct replacement. + + * The new functions `magit-insert' and `magit-put-face-property' take + care of working around the fact that negative overlay priorities + are not supported, i.e., that overlays always take precedence + against text properties. Previously this was done in various + places, and not always correctly (e.g., in some cases overlays did + not evaporate). + + * The section visibility and movement commands were rewritten from + scratch. All those commands now share the prefix `magit-section-' + and edge cases are handled better. New commands were added that + allow cycling the visibility of sections and their children. From + a user perspective Magit's section handling is now quite similar to + that of Org mode. + + * The macro `magit-section-action' was removed. The related macro + `magit-section-case' still exists and will continue to do so. The + action variant provided user-customizable hooks, but these hooks + were rarely, if ever, used. Instead of such action hooks, users who + wish to extend Magit now have to use type-specific section keymaps. + + * Section highlighting was rewritten from scratch. The new + implementation uses hooks to allow washing certain section types + differently than others - without obfuscating the simple cases. + Washing diffs is much more complicated than washing all other + sections, and that part has been factored out. The washing of + all other section types is now quite simple. + + * The appearance of the region now indicates whether it is valid as a + selection. As far as Magit is concerned, valid selections are hunk + internal regions and regions that mark sibling sections of the same + type. When a region does not satisfy one of these, then it is + displayed the sames as in other buffers and Magit cannot act on it. + + * The new option `magit-no-confirm' makes it easy to forgo having to + confirm potentially dangerous actions. Many of these actions are + only dangerous for users who don't know how to undo them. When the + wip modes are turned on, many more previously fatal actions can be + easily undone. Adding `safe-with-wip' here makes it unnecessary to + confirm these actions. + + * The new Refs buffer combines the features of the old Wazzup and + Branch Manager buffers into one, more powerful and efficient + synthesis. For each reference, cherries can be shown by expanding + the ref section, but unlike in the Wazzup buffer, the cherries are + not calculated until the expansion happens, making it vastly more + efficient. Besides local and remote branches, the buffer now also + lists tags, and users can add additional sections listing other + refs, e.g., stashes. The format of refs headers is now + customizable. + + * File-visiting buffers are now reverted without using code from the + built-in `autorevert.el` library. The function we previously used + was intended for internal use only and indeed, changes made there + broke Magit in the past. + + * The new option `magit-revert-buffers' controls whether and how + buffers visiting tracked files are reverted. As before, such + buffers are reverted by default. But by default this is now done + rather noisily to encourage users to read the doc-string and + pick what is right for them. It's now also possible to revert + asynchronously and for the user to be asked every time there are + buffers that could be reverted. This option replaces + `magit-auto-revert-mode`. + + * Many new section inserters are available. Some are variations of + default inserters; `magit-insert-unpulled-cherries', for example, is + like `magit-insert-unpulled-commits' but prefixes each commit with + "+" or "-" to indicate its "cherry state". Other inserters are + completely new (e.g., `magit-insert-unpulled-module-commits'). + + * The header sections in status buffers can now be customized using + the new `magit-status-headers-hook'. This is an additional section + insertion hook; separating it from `magit-status-sections-hook' + gives users complete control over what information is displayed in + the headers, while still making the first header the parent section + of all the other header lines. + + * Many commands that previously could only act on the section at + point can now act on all sections selected by a region, which can + span sibling sections of the same type. + + * Many commands now more intelligently dwim based on the section at + point. + + * Where it makes sense, completion and confirmation have been merged + into a single user action. Many commands that previously allowed + carrying out or aborting some action now also allow the user to act + on something different from the default choice. Where one + previously had to confirm with `yes RET', one now confirms with just + `RET' (to accept the default choice, which previously was the only + choice). + + * The distinction between the various "apply variants" has been + clearly worked out, and they now all provide the same feature set. + The variants are: stage, unstage, discard, reverse, and "regular + apply". In all cases, it is possible to act on a file, a hunk, + files, hunks, and part of a hunk. When acting on the hunk level, + all variants are implemented on top of `git apply', thus the name + "apply variants". + + Un-/staging has always been one of Magit's most beloved features, + and this release takes it to the next level by making the other + apply variants just as consistent, powerful, and intuitive to use. + + All apply variants are context aware, meaning that, for example, the + stage variant knows that an already staged change cannot be staged. + That leads to better error messages. + + * The committing prefix now features additional variants. It was + already possible to quickly create a fixup or squash commit; the + new variants do that and then also instantly perform a rebase to + actually combine these commits with their intended target commits. + + * Rebase sequences are now initiated from the new rebasing prefix. + Several rebasing variants exist, of course including basic + "rebase onto something" and interactive rebase. Other variants + automatically detect and combine squash and fixup commits with + their intended targets. Others let the user edit or reword a + single commit, without having to go through the steps that are + irrelevant in these cases. + + * When a rebase sequence stops at a commit, then the rebasing prefix + instead features suffix commands for continuing, editing, or + aborting the sequence; or skipping the current commit. + + * When a rebase sequence stops, the status buffer displays a list of + the already applied and yet-to-be applied commits. These commits + can be acted on like those in logs. + + * Cherry-picking, reverting, and applying patches using `git am' are + treated the same way as rebasing. A prefix command features + several variants to initiate the sequence. When a sequence is in + progress, then the same prefix instead features suffix commands for + continuing or aborting the sequence, and the status buffer lists + the relevant commits. + + * The magit-specific "rewriting" feature has been removed because it + was a hybrid of "rebasing" and "cherry-picking" and vastly + inferior to both of them. + + * The merging prefix features several new convenient merge variants. + + * Merges can now be previewed before actually carrying them out. + + * When a merge results in conflicts then the commits being merged are + listed in the status buffer, making it easier to review conflicting + changes in the context they were created. + + * Its now possible to discard one side of a conflict directly from + the hunk containing the conflict, using the regular discard key + `k'. It's also possible to restore a conflict. + + * When using an existing branch as the starting-point of a new + branch, it is now automatically configured as the upstream branch. + + * The branching prefix now features suffix commands for un-/setting + the upstream branch. Previously this was coupled with pushing in + a truly obscure way. + + * Branch descriptions can now be displayed in the refs or status + buffer, and the description can be edited using a suffix command + from the branching prefix. + + * The URL of a remote can now be changed from the remoting prefix. + + * A new pulling prefix command was added, which features several new + pulling variants. Previously only one pulling command existed and + it had to be controlled using prefix arguments, which was very + cumbersome. + + * A new pushing prefix command was added, which features several new + pushing variants. Previously only one pushing command existed and + it had to be controlled using prefix arguments, which was very + cumbersome. + + * The various tagging commands are now suffix commands of the new + tagging prefix command. + + * It is now possible to stash, or create a snapshot from, just the + staged or the unstaged changes, instead of both. Suffix commands + for branching, listing, and showing stashes were added to the + stashing prefix + + * When creating stashes the new implementation in `magit-wip.el' is + used instead of `git stash'. This allows the user to create + snapshot stashes without touching any files in the working tree. + + * The submodule prefix now features new suffix commands for adding, + setting up, and fetching modules. + + * Submodules with unmerged commits can now be displayed in the status + buffer. Sections representing submodules can be expanded to show + their unpulled commits. These commits can be acted on like commits + belonging to the super-project. + + * Support for displaying diffs inside the log buffer instead of in a + separate diff buffer has been removed. It might come back one day, + but the old implementation had just fallen behind regular one-line + log too much. + + * The logging prefix features many new infix arguments and suffix + commands, which can now be combined in more flexible ways than + before. + + * Many commands that previously read a single commit, branch, or + file in the minibuffer, can now read multiple, comma-separated items + from the user, while providing completion candidates for all of + them. Likewise, when selecting a range, completion is available + for the second commit too. + + * All of Git's reset variants are now exposed as individual commands, + but not all of them have a key binding by default. + +This was just the tip of the iceberg. + Authors ------- - 1913 Jonas Bernoulli + 2187 Jonas Bernoulli 28 Sebastian Wiesner - 19 Kyle Meyer + 25 Kyle Meyer + 19 Noam Postavsky 17 Pieter Praet - 16 Noam Postavsky 12 Rémi Vanicat 9 Florian Ragwitz + 5 Philippe Vaucher 5 Ramkumar Ramachandra 4 Cornelius Mika 4 Kan-Ru Chen - 4 Philippe Vaucher + 4 Syohei Yoshida + 3 Alex Dunn + 3 Alex Kost 3 Nicolas Richard - 2 Alex Kost 2 Eric Schulte + 2 Ingo Lohmar 2 Mitchel Humpherys 2 Peter Eisentraut 2 Ryan C. Thompson - 2 Syohei YOSHIDA 1 Adeodato Simó 1 Andrew Schwartzmeyer 1 Andy Sawyer 1 Bradley Wright 1 Guillaume Martres - 1 HUANG Wei 1 John Mastro 1 John Wiegley 1 Julien Danjou + 1 Lingchao Xin 1 Mark Oteiza 1 Michael Fogleman 1 Michael Griffiths 1 Michal Sojka + 1 Natalie Weizenbaum + 1 Oleh Krehel + 1 Peter Vasil 1 Rüdiger Sonderfeld + 1 Steven E. Harris 1 Teemu Likonen + 1 Thomas A Caswell + 1 Tim Perkins 1 Tim Wraight + 1 Wei Huang + 1 Xavier Noria diff --git a/Makefile b/Makefile index c660c74..9425063 100644 --- a/Makefile +++ b/Makefile @@ -188,9 +188,9 @@ define magit_pkg "A Git porcelain inside Emacs" '((emacs "24.4") (dash "2.10.0") - (with-editor "2.0.50") - (git-commit "2.0.50") - (magit-popup "2.0.50"))) + (with-editor "2.1.0") + (git-commit "2.1.0") + (magit-popup "2.1.0"))) endef # ' export magit_pkg diff --git a/lisp/git-commit.el b/lisp/git-commit.el index 2e7a823..a031df7 100644 --- a/lisp/git-commit.el +++ b/lisp/git-commit.el @@ -11,7 +11,7 @@ ;; Marius Vollmer ;; Maintainer: Jonas Bernoulli -;; Package-Requires: ((emacs "24.4") (dash "2.10.0") (with-editor "2.0.50")) +;; Package-Requires: ((emacs "24.4") (dash "2.10.0") (with-editor "2.1.0")) ;; Keywords: git tools vc ;; Homepage: https://github.com/magit/magit diff --git a/lisp/magit.el b/lisp/magit.el index e867b2f..e38f273 100644 --- a/lisp/magit.el +++ b/lisp/magit.el @@ -14,7 +14,7 @@ ;; Rémi Vanicat ;; Yann Hodique -;; Package-Requires: ((emacs "24.4") (dash "2.10.0") (with-editor "2.0.50") (git-commit "2.0.50") (magit-popup "2.0.50")) +;; Package-Requires: ((emacs "24.4") (dash "2.10.0") (with-editor "2.1.0") (git-commit "2.1.0") (magit-popup "2.1.0")) ;; Keywords: git tools vc ;; Homepage: https://github.com/magit/magit -- cgit v1.0