1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231
|
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 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
having some serious problems. Over the years the source had gotten
very disorganized and many old abstractions were no longer sufficient.
Unfortunately existing code had almost never been adjusted when new
features had been added, leading to a lot of new code that worked
around limitations of existing code.
This was clearly not sustainable in the long run, and so I started
cleaning up and replacing the existing abstractions with simpler, yet
often more powerful implementations. Unfortunately his had to happen
incrementally as it was seldom possible to cleanup one area without
making substantial changes elsewhere. Along the way I also addressed
many of the hundreds of feature requests, but that was more of a bonus
- the focus was on getting the codebase ready for future improvements.
At the beginning of 2014 I moved development to the new next branch.
Working on a branch which was not used by thousands of Melpa users
allowed me to move faster and users were no longer affected by the
occasional regression. But it also meant that I now had to maintain
two branches. In hindsight I should have released the master branch
as 1.3.0 at that time, despite all the known defects it had.
Since then I have finished the cleanup on the next branch and then
moved on to implement many new features. On the master branch the
focus was on bugfixes and the occasional backport. This release is
based on the master branch. Later this spring 2.1.0 will be released
based on the next branch.
Compiling a list of all changes in 1.4.0 would by a major amount of
work in itself, so instead the below list is for the most part limited
to major changes, which enabled the user visible changes. Many users
don't have to be told about the new features anyway - they have been
using them for more than a year now.
Changes since v1.2.2
--------------------
* The libraries `magit-topgit.el', `magit-stgit.el', and
`magit-svn.el' all reincarnated as separate repository.
* The libraries `magit-classic-theme.el' and `magit-simple-keys.el',
which allowed users to undo some of the changes in older releases,
were removed.
* The library `rebase-mode.el' was renamed to `git-rebase-mode.el'
and moved to the `magit/git-modes' repository.
* The library `magit-log-edit-mode.el' was removed and replaced with
`git-commit-mode.el' from the `magit/git-modes' repository.
* The functionality provided by the library `magit-bisect.el' was
replaced with a new implementation in `magit.el'.
* The package `cl-lib` is now used instead of the obsolete `cl'.
* The library `magit.el' no longer lacks any recognizable structure.
* The macro `magit-define-command' was removed.
The hook that was defined in addition to the command only served
to make things more complicated and the generated doc-string was
insufficient.
* The use of "section actions" has been reduced to a minimum.
Commands that behave differently depending on the type of the
current section still use `magit-section-case' or in some cases
even `magit-section-action', but the preferred way for users to
add new variants now is to add a new command to the type-specific
section keymap, instead of the hooks defined by
`magit-section-action'.
* More work is done directly in `magit-with-section'.
Most of the helper functions were removed. These functions
were not intended to be used directly, but that did not keep
contributors from doing so, leading to many inconsistencies.
* The mode machinery was massively refactored.
Most importantly the new macro `magit-mode-setup' was added,
replacing the old `magit-mode-init' which forgoes most of the
things each and every of its callers has to do, which let to many
inconsistencies
* The refresh machinery was massively refactored.
A refresh now has to be requested more explicitly by either calling
`magit-refresh' or one of the functions that call Git and then the
former. Also, refreshing now more often correctly preserves point.
* Washing diffs now takes less cycles.
Previously the code used to wash diffs was very complicated. It
passed around state using many dynamically bound variables, and
called `git diff' many times. Now we call `git diff' once and then
wash its output in one go.
* Commits and stashes are now washed using the regular diffwasher.
* Low-level functions for running Git were massively refactored, and
many new variants were added. Previously many callers had to deal
with the gory details themselves (and usually did it badly).
* The output from processes is now logged in a dedicated buffer.
From this buffer it's also possible to kill a running process.
* The Wazzup buffer was massively refactored.
All options to optionally make it faster were removed, as it is now
faster out-of-the-box without sacrificing any functionality at all.
* Many more competing abstractions were unified.
It was common to have one no longer sufficient core abstraction, and
several competing wrapper abstractions. In most cases this has been
replaced with a single, less complex implementation, which serves all
of the current use cases.
* Refreshing "after a asynchronous process has run" now happens after
the process has actually finished. That was always the intention,
but not what actually used to happen.
* The commit message is no longer provided when calling `git commit'.
Instead Git populates a file with a template and then uses $EDITOR
to have the user edit that. This did not work so well for a while
but now we succeed in having the emacsclient being used as $EDITOR.
* A new Branch Manager was added.
* Log learned to show optionally show author information in the
margin.
* Terminology with regards to what a tracking branch is, was fixed.
* When creating a new branch the default choice is what Git would
default to, instead of some silly name.
* Tools used to test whether Git supports certain features was removed.
Instead we now require a non-ancient version of Git.
* The shell script `magit' reincarnated as a separate repository.
Authors
-------
1838 Jonas Bernoulli
171 Yann Hodique
121 Pieter Praet
59 Rémi Vanicat
24 Nicolas Dudebout
21 Takafumi Arakaki
16 acple
14 Phil Jackson
13 Rüdiger Sonderfeld
12 Mitchel Humpherys
8 Servilio Afre Puentes
7 Ramkumar Ramachandra
7 Teruki Shigitani
6 Lluís Vilanova
6 Sergey Vinokurov
5 Thierry Volpiatto
4 Moritz Bunkus
4 Noam Postavsky
4 Seong-Kook Shin
3 Laurent Laffont
3 Leonardo Etcheverry
3 Loic Dachary
3 Raimon Grau
3 Sébastien Gross
2 Bastian Beischer
2 Damien Cassou
2 Evgkeni Sampelnikof
2 Greg A. Woods
2 Greg Sexton
2 Jesse Alama
2 Leandro Facchinetti
2 Nguyễn Tuấn Anh
2 Nick Alexander
2 Pekka Pessi
2 Philippe Vaucher
2 Rafael Laboissiere
2 Sebastian Wiesner
1 Abdo Roig-Maranges
1 Adam Spiers
1 Andrei Chițu
1 Andrew Schwartzmeyer
1 Brandon W Maister
1 Chris Done
1 Chris Ring
1 Christopher Monsanto
1 Cornelius Mika
1 Dan LaManna
1 David Hull
1 Dennis Paskorz
1 Divye Kapoor
1 Eric Schulte
1 Felix Geller
1 Feng Li
1 Geoff Shannon
1 Jan Tatarik
1 Jeff Dairiki
1 John Wiegley
1 Jordan Greenberg
1 Kyle Meyer
1 Lele Gaifax
1 Manuel Vázquez Acosta
1 Marcel Wolf
1 Marian Schubert
1 Matus Goljer
1 Nick Dimiduk
1 Nicolas Richard
1 Peter J. Weisberg
1 Philipp Haselwarter
1 Prathamesh Sonpatki
1 Romain Francoise
1 Roy Crihfield
1 Sanjoy Das
1 Sergey Pashinin
1 Steve Purcell
1 Steven Chow
1 Steven Thomas
1 Thomas Frössman
1 Thomas Riccardi
1 Ting-Yu Lin
1 Wilfred Hughes
1 Win Treese
1 York Zhao
1 aaa707
1 Ævar Arnfjörð Bjarmason
|