The primary focus of this release are blob-visiting buffers. For now the hope is that most users will find working with such buffers slightly more pleasant, without necessarily becoming aware that anything changed. The goal was to pay off technical debt and to prepare for future changes.
- Visiting blobs now always involves
magit-find-file-noselect, even when an existing buffer may be involved. The behavior of this function is getting closer to that offind-file-noselect. - Implemented support for visiting blobs for the benefit of features such as syntax-highlighting, as opposed to the user visiting it explicitly. Such “volatile” blob buffers are hidden and are cached for a while, in case they are needed again. If the user visits a hidden cached blob, the buffer is renamed to reveal it and it is no longer subject to garbage collection.
- Blobs can now alternatively be visited with nothing but a blob object id (instead of a revision and a path).
- Blob-visiting buffers can now be reverted with
g, which is useful when the buffer is visited via, e.g., a branch, as opposed to a revision or blob object id. The buffer is not needlessly refreshed, if the blob oid does not change. dd48491659, f55bfaf792, cf84935a74 - Syntax highlighting can now be enabled for diffs. This is disabled
by default, because the work is still being performed synchronously,
which leads to noticeable delays for large diffs and can be sluggish
even for smaller diffs. #2942, c7b0342dc7
A future release is going to add support for asynchronous diff syntax highlighting. (The blob buffer cache added in this release does help, but is not enough.)
Configure
magit-diff-fontify-hunkto try out this feature now, but please just disable it again, if it turns out to still be too slow for your taste. If you enable this, you should also customize the new optionmagit-diff-specify-hunk-foregroundand possibly the new optionmagit-diff-use-indicator-facesas well. - Added new hook
magit-find-blob-hook, which replaces the old hooksmagit-find-file-hookandmagit-find-index-hook. The new hook is run when first visiting a blob as the old hooks used to do, but also when reverting a blob buffer. fc29202838, 999047889c magit-find-file-noselectnow pivots to the worktree file when asked to visit the index blob, but that has multiple stages, due to an unresolved conflict. This likely will be revisited. a2165a0ba7- Added support for compiling a list of definitions that are modified
in a diff, and for inserting such lists when authoring commit
messages. The new commands
git-commit-insert-changelog-gnuandgit-commit-insert-changelog-plaininsert such list and can be invoked from the same menu (onC-c C-i), which is used to insert commit trailers. #2931, 863f1aa6fe, 46b7f76df3 - Improved support for jumping to the same location in another blob, from a buffer visiting a blob or file. 87090491d4
- Reworked
magit-buffer-*variables. Many were renamed (but the old names are still available as obsolete aliases). Others that were previously shared by multiple modes were replaced with mode-specific variants. 298218fa85~..7bfc458065 - When authoring commit messages,
complete-symbolnow completes against modified definitions and symbols appearing in modified lines. 2366db4b3b - Thanks to the improvements to
magit-find-file-noselectand the blob buffer cache, Ediff support could be simplified considerably. - If it is part of an Ediff session, quitting a blob-visiting buffer
would corrupt that session, so teach
magit-bury-or-kill-bufferandmagit-bury-bufferto instead offer to completely quit the session. 29c6241993 - Commands that currently cannot be used are now explicitly disabled in the ediff menu. 3125b51ede
- Provided
magit-delete-by-moving-to-trashisnil,magit-worktree-deleteis faster now. #5504 - Taught
magit-insert-worktreesto emphasize the current worktree even if no branch is checked out. fbc4b5d316 magit-git-stringnow returnsnilif the exit status is non-zero. Previously it tended to return the empty string instead, making it harder for callers to detect and handle errors. c85358f5b0- When listing repositories
uniquify-separatoris now respected. #5514 magit-diff-toggle-refine-hunknow favors immediate refinement mode over the incremental variant. 550ec1cb1f- Added new command
magit-remote.<remote>.followremotehead. #5283 - Improved gitignore commands and menu. 1c0efafc4b~..28878dd879
Bugfixes:
- Deleting all stashes proceeded without requiring confirmation. #5500
- When the status buffer is refreshed in the background, point was reset to its beginning. 9d7e06dd8c
magit-find-file-noselectassumed the file is located in the current repository. c7b70171bamagit-worktree-deletedid not ask for confirmation if there are untracked files, which would be lost. 7887f80213magit-wip-modewas added togit-commit-post-finish-hook, even if it ended up as a no-op, which could result in a timeout warning, which in this case would be meaningless. 24e97fcdfemake cleanfailed to removemagit-autoloads.el. dd6363369fmake emacs-Qwas broken. #5517- Before the initial commit, use of
magit-wip-modecould result in bogus errors. 8783759256 - Amending the initial commit resulted in an error. #5524
- Errors that occur while preparing a commit diff are now demoted or suppressed, allowing the commit process to proceed. 90561a2e85, #5526
- Merge commands can now create octopus merges. #5523
- Commands that usually cycle through values displayed in the transient menu can also use completion to set the new value (by using a prefix argument). The completion candidates displayed in that case have been improved. 60e04662be, 7ecc3d3890
- It wasn’t possible to reverse the sole hunk adding a file. #5521
- The value displayed for transient suffixes that represent Git variables could be wrong if the global value is used as fallback. 8d891f7c41
- The value displayed for transient suffixes that represent boolean Git variables was wrong if the variable is unset. aa625ec04c
- A new feature in Emacs 31 caused a misleading hint to be added to the prompt used when reading a range. f44c6424ce
- A remote branch could not be deleted if a tag with a matching name exists. #5368
- If
magit-git-debugis enabled and an error occurs,magit--git-insert, and thusmagit-git-insert, always returned the error message, which most callers were not prepared to handle, making debugging harder, not easier. Now these functions returnnil, like when debugging is disable. 71047f4d45 - A secondary Git index is used when creating wip commit, but despite that, if the primary index is locked that fail. The primary index can be locked at surprising times (e.g., while the user is writing a commit message). If the creation of a wip commit results in an error, that previously was not demoted, preventing explicit user actions from completing. 315d85c765
- On Windows compiling Magit failed if Git isn’t installed. #5548
- Added a kludge to make it possible to read a module using Helm. #5546
magit-list-filesand other functions that list files no longer limit to files indefault-directory. All callers needed that, but had to switch to the top-level before calling such functions, and some callers failed to do so. c29f7eb3e4magit-untracked-filesusedgit ls-files, which is unreliable when it comes to this particular file set, instead of the reliablegit status --porcelain. 073b01e834
- Removed support for loading Magit extensions from “.git/config”.
Please use
.dir-locals.elinstead. d662ec107e - Reworked how the global
magit-auto-revert-modeis, or is not, enabled at startup. Enablingglobal-auto-revert-modenow disables this mode. 38a916f555..de766d2968 et al. - Simplified
magit-wip-mode. This involves removing all other wip modes (which allowed using only a subset of the protection offered bymagit-wip-mode) and using the newmagit-before-change-functionsandmagit-after-apply-functionshooks. 98ef107037..fa629ad5b5 - Added experimental support for calling Lisp hooks from Git hooks,
and added a few such hooks:
magit-common-git-post-commit-functions,magit-git-post-commit-functions,magit-git-post-merge-functionsandmagit-git-post-rewrite-functions. - Replaced option
magit-section-visibility-indicator(singular) with new optionmagit-section-visibility-indicators(plurarl) to better support emacs sessions that have both terminal and gui frames. 2d8f43e681 mouse-set-pointis now remapped to Magit’s variant. fa5906621amagit-autoloadsis now loaded exactly once. 3d1a008f18- Fixed custom type of
magit-blame-styles. 84c5c8c8c6 - Fixes regression in
magit-rebase-autosquash. It no longer excluded the merge-base. 54e460a701 - A few hook functions were not autoloaded. #5464
- Some refinements were calculated for the diff in the commit message buffer, despite not actually being displayed. #5483
- Commands for showing logs for wip branches were no longer displayed
in the log menu, despite
magit-wip-modebeing enabled. #5488 - Added new option
magit-wip-debug. 655bc502a3 - Various build improvements.
- Addressed harmless compiler warning.
- Added new option
magit-log-trailer-labels. #5432 - Added new command
magit-delete-shelved-branch. 31c0ae17d3 - Added new variable
magit-save-repository-buffers-predicate. #5450 - Fixed saving the value of the menus
magit-diff,magit-log,magit-diff-refreshandmagit-log-refresh. c7ba53b4b4 - A form from the
cond-letlibrary made it into the autoloads file, where that library isn’t being loaded. #5451 magit-revert-rev-file-bufferdid not respect a value ofnilforenable-local-variables. 5eb31a419a- Improved commands for jumping to specific sections in revision buffers. #5442
- Improved consistency of scroll command bindings. #5453
- It is possible again to exit
magit-completing-read-multiplewith no input if REQUIRE-MATCH ist. b5066e5fa4 - Diffs that appear in logs could not be parsed in some edge cases. #5454
- At least Emacs 28.1 is required now. Emacs 30.1 was released earlier this year, so Emacs “oldoldstable” is still supported.
- Code for tracking a position within a file across versions and diffs, and the commands that build on that to allow jumping to the same location in another version or diff, are undergoing heavy refactoring and improvements. This is paying off technical dept and prepares for upcoming user-level improvements as well as for new features. Some changes in behavior already appear in this release, as described below.
- For staged and unstaged changes,
magit-diff-visit-file(RET) now always visits the blob actually corresponding to the line at point, as it already did for committed changes. Previously it failed to visit the index blob from an unstaged removed line when that file has staged changes; and it failed to visit the index blob from a staged added line.Visiting the file in the worktree is very useful, but, instead of
RET, I recommend usingC-<return>(magit-diff-visit-worktree-file). The new optionmagit-diff-visit-prefer-worktreeallows restoring the old behavior. See Visiting Files and Blobs from a Diff. - “Blob navigation” is now aware of index blobs. It is possible to navigate between such blobs, and the HEAD blob or the file on disk, using the same key bindings used to time travel from one committed blob to another. See Minor Mode for Buffers Visiting Blobs and Commands for Buffers Visiting Files.
- When quitting a blob-visiting buffer with
q, it is no longer killed, iff it is being displayed in an additional window. The behavior can be changed by bindingqinmagit-blob-mode-mapto one of the commandsmagit-bury-or-kill-buffer,magit-bury-buffer, ormagit-kill-this-buffer. The former two are new commands. 731642756f magit-status-herenow places the cursor within the diff of unstaged changes, if the current line in a file-visiting buffer has unstaged changes. If it does not, then it falls back to going to the corresponding staged change. #4814- Even though
auto-revert-modeis enabled, if that has not yet kicked in and the user visits a file that needs reverting, they used to be asked to confirm the revert. efaf91d8af magit-completing-readandmagit-completing-read-multiplecan now require non-empty input. If REQUIRE-MATCH isany, then the user can exit with input that does not appear in the collection, but is not allowed to exit with zero input. #5422magit-completing-read-multiplenow adds the default choice to the set of valid choices. 7167f70665magit-read-branch-or-commitcan now exclude more than one possible choice from the set of valid choices. 10c366ed52- Improved minibuffer input for worktree commands, including adding
new option
magit-read-worktree-directory-function. - Section visibility indicators can now be displayed in the left margin. #5424
- References in the
refs/pullreqsnamespace are no longer offered as completion candidates. 87ddd8f7c4 - Improved font-lock in
git-rebase-mode. 3857b8bce9..9654f5e094 - Added new face
magit-diff-conflict-heading-highlight. 2e76ec9337 - Added new command
magit-revision-jump, a menu for use inmagit-revision-mode, bound toj. acf71f7eb4 magit-dired-jumpnow supportsmagit-repolist-mode. 8c4a903886- Fixed a regression
magit--refresh-buffer-set-positions, added in v4.3.7, which messed up the window-start. 406a3094a8 magit-setup-bufferandmagit-refresh-buffertake two new keyword arguments INITIAL-SECTION and SELECT-SECTION. Two arguments ofmagit-setup-buffer-internalare now keyword arguments. ced0984540, c4def6d99a- All text inserted into Magit buffers that previously used
facenow usefont-lock-faceandmagit-section-modecan therefore setfont-lock-defaults. Previously if some third-party packages usedfont-lock-add-keywords, some of Magit’s own fontification would be lost. Third-party packages that usemagit-section-mode, might need to be adjusted accordingly. 7de0f1335f, b4768acb1f - Daring to use my new Cond-Let package and other shorthands. 08dafc1732..1c48327a06, b377adb68c
Bugfixes:
- In v4.3.7 we started to restore the display-start positions of the windows displaying a buffer that is being refreshed, but in log buffers that is undesirable. After creating a new commit we want that to immediately be displayed at the top of windows displaying log buffers. #5403
- Refreshing was skipped after discarding all untracked files.
- When sub-directories contain “.gitignore” files, then invoking
magit-discardon the “Untracked files” section did not necessarily remove the same set of files as listed in that section. (At least it did show the files, which would be removed, in the confirmation prompt.) #5405
- Refreshing a buffer causes its content to be recreated, which can result in scrolling. Now we attempt to restore the display-start positions of the windows displaying the buffer. #5403
- When running
gitfor side-effects and that signals an error, we did not augment the error message to inform the user that the full output can be found in the process buffer. When the error is not signaled, we did already append that hint to the message. Also added a new option,magit-show-process-buffer-hint, for people who are already aware of the process buffer and would like to avoid the noisy reminder. #5396
Bugfixes:
- Some instructions inserted into rebase sequence buffers were not
prefixed with
comment-start, instead # was used unconditionally. #5388 - Fixed a regression in v4.3.6, which caused a conflict between the overlays used for section highlighting and section selection, if both of these faces relied on the same face property (likely the foreground color). #5389
- Hunks could remain painted as selected when navigating away. #5393
- The log arguments “–grep” and “–graph” are no longer mutually exclusive, but we still dropped the latter when the former was used. #5391
magit-save-repository-bufferserrored on older Emacs releases, if the value of the variable by the same name isask. #5399magit-after-save-refresh-statusdid not honormagit-inhibit-refresh. d9d2f6c312
- Generalized and heavily refactored the code, previously used only to highlight diff-related sections and to paint hunks, so that it can be used for other sections as well. The new implementation should also be a bit faster. cfe4faaaf6^..c556fee1bd
- A single-section selection now requires a non-empty region. 6c4c16942a
- When creating a stash, “On <branch>: ” is now offered as a second future history element. 75c6191999, 9b81df36b4
- Added new commands
git-rebase-drop,git-rebase-alterandgit-rebase-squish. 479c467080, 9674c4755a
Bugfixes:
- Fixed issues concerning date handling in log margins. #5373
- The list of rebase actions in the status buffer could contain invalid elements derived from comments in Git’s list of such actions. 91806dc729
- Applying the region used to fail, if some part of the same hunk but outside the region has conflicts, even if the part in the region did not. 9e551d9eb7
Bugfixes:
- Fixed a v4.3.3 regression in inserting rebase actions into the status buffer when stopping at the last commit. #5365
- Arguments, that are normally set by cycling through the possible values displayed in the menu, can now also be set using completion, by using a prefix argument. #5362
Bugfixes:
- Matching references were no longer displayed on the first line of revision buffers. 48b158500d
- Fixed a v4.3.3 regression in inserting rebase actions into the
status buffer when
--rebase-mergesis specified. #5365 - On the “Untracked files” section,
kno longer worked as intended. #5366
Also contains code and documentation cleanups and improvements.
magit-section-show-levelnow acts on all selected sections. #5354- Inserting the list of commits being rebased into the status buffer is now much faster. 8e72767262
- All rebase actions are now inserted into the status buffer. 69b310e109
- While editing the list of commits and actions to be rebased
git-rebase-kill-line(k) on a commented line now uncomments it. ff44ee1bc3 - Added new variants of commands that deal with files for use in Dired
buffers, and improved existing variants. In Dired, these commands
are available from
magit-file-dispatch(C-c M-g). 542c2f8a75 et al. magit-branch-shelvenow prepends the date to the refname, andmagit-branch-unshelveremoves such prefixes. 78ffd1a389- The new function
magit-insert-shelved-branchcan be added tomagit-refs-sections-hookto list shelved branches. d6b7784547 - Added new command
magit-wip-purge, which removes old branches created bymagit-wip-mode. d5e0f3a639 magit-blame-stylesnow supports inserting truncated commit hashes. #4057- Added new command
magit-mouse-set-point. 3c9e519197
Also contains code and documentation cleanups and improvements.
- Removed legacy options
magit-wip-*-mode-lighter. 225ea6fd00 magit-log-currentnow falls back to displaying the log forHEADif no branch is checked out, and the now redundantmagit-log-headis no longer displayed in themagit-logmenu by default. c8b1e12bd5- Renamed
magit-merge-intotomagit-merge-dissolveand changed the key binding in themagit-mergemenu fromitod. The description in that menu already was “dissolve”. Do this to make it more obvious that this command deletes the source branch after it has been merged into the target branch. #4386 - Added new option
magit-process-apply-ansi-colors(but discourage its use). #5348 - Support for Ido has been moved out into a new package
magit-ido. 6aec967ee4
Bugfixes:
magit-after-save-refresh-buffersdid not respectmagit-inhibit-refresh. c0a8e694b9- When washing of a section was delayed and it ends in an empty line, that line was not always made part of the section. f6f25e6566
- In some cases section specific key bindings were not made available as intended. 6ce1ece580, 3f79700f1b
- In some cases
magit-toggle-buffer-lockhas to uniquify buffer names but failed to do so. #5330 - After applying a hunk, the buffer was refreshed twice. #5343
- The diff shown by
magit-diff-pathswas not washed. #5093
Also contains more code and documentation cleanups and improvements.
- Added new option
magit-format-file-function,and two functions to optionally prefix file names with icons, with the help of eitherall-the-iconsornerd-icons. #5308 - Added new commands
magit-previous-referenceandmagit-next-reference, with entry pointC-c C-r. Enablerepeat-modeto keep navigating withpandn. #5310
Bugfixes:
magit-commit-revisefailed if no arguments were used. #5306- Some arguments were missing from diff menus when invoked from the status buffer. #5309
- In some menus the bindings for
--signoffconflicted with those for other arguments. #5312 - Fixed unlikely issue in
magit-git-mergetool. 66e3ddffe4 - Unknown Git trailers resulted in a display error while writing commit messages. 8c27c910ca
- When the word at point matched the name of a branch, that was unconditionally treated as the commit-at-point. This should only be done when that word is shown using an appropriate face. 2b3f2cb9ad
- Fixed bug in
magit-section-cycle-diffs. #5319 magit-stage-untrackedwas a bit fragile. #5325
- Added new option
magit-refs-show-branch-descriptions. 42ed6c1966 - When a stash cannot be applied using the trivial method, the user is offered some fallback methods. The presentation of those has been improved. #5253 a08b4dd513
- Added new hook options
magit-revision-wash-message-hookandmagit-log-wash-summary-hook, and populate them with new and existing highlighting functions, making it easier to remove default highlighting and to add custom highlighting. This also increases consistency between how commit summaries are shown in logs and when displaying complete commit messages. f54fce0ecc..b86fe009e2 amend!markers are now highlighted likefixup!andsquash!markers. #5261magit-commit-createno longer amends to HEAD when called with a prefix argument. Themagit-commitmenu offers four amend commands. That should be good enough. 5e60aa72e5magit-commitno longer features the obscuremagit-commit-reshelveby default, but it can quickly be reinstated, using the level mechanism. 20eb323b47- Added new commands
magit-commit-alterandmagit-commit-revise, completing the already extensive set of “fixup” commands. #5261 - Improved commit menu, documentation and implementation details. #5261
- The branch at point is detected in more contexts now, i.e., when there is not actually a branch at point, but one can unambiguously be derived from the thing at point. 4876f1921e
- Reworked
magit-process-password-prompt-regexpsto be more permissive and better structured. Hopefully that means we have to extend it less frequently going forward, when users run into new prompts. #5288 - Speed up listing untracked files in the status buffer, simplify how the list is configured, and give up on optionally using a tree. #5284
- Argument
--signoffis now available in all menus that create commits. However, it is no longer shown in any menu by default. See the end of Enabling and Disabling Suffixes to learn how to enable it in all menus at once in a single action. #5297 - Began using the
##macro from thellamapackage. 0a64982100 - Stopped depending on the
dashpackage. e40e8f1994
Bug fixes:
- When applying a stash, it was not always discovered when the trivial method was unsuccessful, and so the user was not offered the use of a fallback method. #5253 929eb4dca5
git-commit.eldid not requiremagit-process, which was only a problem when it is loaded without also loading the rest of Magit. #5280.- The use of an external diff drivers was not prevented in some places. #5282
magit-blame-maybe-show-messagedid not protect against interpreting % in commit messages as %-specs. d0e795f423- Parts of commit message headers lost the intended background color. 46c3d8b0ad
- The confirmation prompt of
magit-worktree-deletefailed to name the affected worktree. #5286 - The wrong suffix color was used for
magit-commit-absor 5A7E bandmagit-commit-autofixup. bfadd41079 magit-stash-indexdid not usemagit-stash-read-message-function. #5295- Fixed an error that occurred when creating
magit-hunk-section-mapand the user has disabledsmerge-command-prefix. The same bug exists in Emacs since 29.1, so this will only help users stuck on Emacs 28. #5300 - When the value of a diff or log menu was being initialized from the arguments in the current buffer and the diff/log was already limited to a set of files, then all other arguments were discarded. #5304
- At least Git 2.25.0 is required now. 033a0c0cdc
- At least Emacs 27.1 is required now. c1a86066e8
- Added new command
magit-toggle-profiling. f637dd1877 - Added new command
magit-toggle-subprocess-record. ec1f403af1
Bug fixes:
- Fixed a regression in
transient-init-value. 5b4c4aea1b - Fixed setting
fill-paragraph-functioningit-commit-setup-changelog-support. 139e0fcff3 magit-log-refreshlacked the--sinceand--untilarguments, which were already available inmagit-log. 3ecebe8d11- Enabling verbose output in
magit-commit-absorbcaused an error. #5272 - In logs, no longer strip
heads/prefix from branch names if a tag with the same name exists. 5cb3492464 magit-list-special-refnamesreturned nonsense. #5277
- For most important sections, if an error occurs while inserting the section, the error message is now displayed in the section body. #5255
magit-submodule-populatenow supports--recursive. #5191 #5256- Improved
magit-process-password-prompt-regexps. #5257
Bug fixes:
magit-stash-popandmagit-stash-applysometimes installed conflicts for the user to resolve that are more complicated than they need to be. #5253magit-stash-pushplaced--before other arguments. #5260magit-autorevertfailed to requiremagit-process. #5263
- Add various minor process logging improvements:
5b30c05d3a magit–git-insert: Collapse process section if appropriate
b11524120e magit–git-insert: Optionally always log to process buffer
cd6cf89d6a Use different face for debug-only process sections
bba06845de magit-process-insert-section: Improve file-path comparison
f2a6133443 magit-run-git-async: No longer clutter
*Messages*buffer
Bug fixes:
- If the left margin was in use before
magit-blame-modestarted using that margin, then the old width was not restored when the mode was disabled. #5236 - Prior to Tramp being loaded, setting
magit-tramp-pipe-stty-settingstonilresulted in an error, due totramp-pipe-stty-settingsnot being bound yet. #5240 magit-copy-section-valueno longer did anything for most section types. #5244.- Global git arguments often got added twice to the list of arguments ultimately passed to git. 914285a5e8
- Inserting the headers of status buffers involves temporary changes
to
magit-insert-section-hook. These changes were not restricted to the current buffer, causing errors whenmagit-git-debugis enabled and we thus insert sections in the process buffer, while the status buffer is being refreshed. 11e13640c4 - Some
giterrors were not logged despitemagit-git-debugbeing enabled. 874fb0fede magit-browse-thingandmagit-visit-thingtried to turn anything at point into an URL. Now the bail if there is no URL at point. 7c842b8ac0
- Avoid unnecessary work when
auto-revert-remote-filesisnil. #5222 - Improved default choice offered by
magit-branch-resetandmagit-reset-*. #5230
Bug fixes:
- Added a workaround for a regression in Git v2.46.0. #5212
- Section-specific bindings were removed when a section was expanded whose body is not inserted until the expansion takes place. 9395de2c94
- Addressed an incompatibility with Eglot. #5226
- Adapted to a change in
define-globalized-minor-modein Emacs 30, which causeddiff-hl-modeto be enabled in blob buffers. #5229 - When adding the commit at point to the completion defaults, it was
assumed that
minibuffer-default-add-functioncannot be nil. 6d0075f523 magit-blame--format-string-1didn’t handle a list of faces correctly. 5395798301- Addressed an incompatibility with Indent-Bars. #5233
- The library
git-commit.elis no longer distributed as a separate package,git-commit, but as part of themagitpackage. - Improved
magit-tag-release’s consistency and handling of arguments. #5102 - Updated tooling and other housekeeping.
Bug fixes:
- Only use an explicit range in
magit-insert-recent-commits, when also using--graph. With--graphit increases performance noticeably, but without it decreases performance somewhat. #5075 magit-completing-read-multiplenow shows the default choice in the prompt, if a completion framework is used, for which that is useful. #5205.
See docs/RelNotes/.