| Git 2.16 Release Notes |
| ====================== |
| |
| Backward compatibility notes and other notable changes. |
| |
| * Use of an empty string as a pathspec element that is used for |
| 'everything matches' is now an error. |
| |
| |
| Updates since v2.15 |
| ------------------- |
| |
| UI, Workflows & Features |
| |
| * An empty string as a pathspec element that means "everything" |
| i.e. 'git add ""', is now illegal. We started this by first |
| deprecating and warning a pathspec that has such an element in |
| 2.11 (Nov 2016). |
| |
| * A hook script that is set unexecutable is simply ignored. Git |
| notifies when such a file is ignored, unless the message is |
| squelched via advice.ignoredHook configuration. |
| |
| * "git pull" has been taught to accept "--[no-]signoff" option and |
| pass it down to "git merge". |
| |
| * The "--push-option=<string>" option to "git push" now defaults to a |
| list of strings configured via push.pushOption variable. |
| |
| * "gitweb" checks if a directory is searchable with Perl's "-x" |
| operator, which can be enhanced by using "filetest 'access'" |
| pragma, which now we do. |
| |
| * "git stash save" has been deprecated in favour of "git stash push". |
| |
| * The set of paths output from "git status --ignored" was tied |
| closely with its "--untracked=<mode>" option, but now it can be |
| controlled more flexibly. Most notably, a directory that is |
| ignored because it is listed to be ignored in the ignore/exclude |
| mechanism can be handled differently from a directory that ends up |
| to be ignored only because all files in it are ignored. |
| |
| * The remote-helper for talking to MediaWiki has been updated to |
| truncate an overlong pagename so that ".mw" suffix can still be |
| added. |
| |
| * The remote-helper for talking to MediaWiki has been updated to |
| work with mediawiki namespaces. |
| |
| * The "--format=..." option "git for-each-ref" takes learned to show |
| the name of the 'remote' repository and the ref at the remote side |
| that is affected for 'upstream' and 'push' via "%(push:remotename)" |
| and friends. |
| |
| * Doc and message updates to teach users "bisect view" is a synonym |
| for "bisect visualize". |
| |
| * "git bisect run" that did not specify any command to run used to go |
| ahead and treated all commits to be tested as 'good'. This has |
| been corrected by making the command error out. |
| |
| * The SubmittingPatches document has been converted to produce an |
| HTML version via AsciiDoc/Asciidoctor. |
| (merge 049e64aa50 bc/submitting-patches-in-asciidoc later to maint). |
| |
| * We learned to talk to watchman to speed up "git status" and other |
| operations that need to see which paths have been modified. |
| |
| * The "diff" family of commands learned to ignore differences in |
| carriage return at the end of line. |
| |
| * Places that know about "sendemail.to", like documentation and shell |
| completion (in contrib/) have been taught about "sendemail.tocmd", |
| too. |
| |
| * "git add --renormalize ." is a new and safer way to record the fact |
| that you are correcting the end-of-line convention and other |
| "convert_to_git()" glitches in the in-repository data. |
| |
| |
| Performance, Internal Implementation, Development Support etc. |
| |
| * An earlier update made it possible to use an on-stack in-core |
| lockfile structure (as opposed to having to deliberately leak an |
| on-heap one). Many codepaths have been updated to take advantage |
| of this new facility. |
| |
| * Calling cmd_foo() as if it is a general purpose helper function is |
| a no-no. Correct two instances of such to set an example. |
| |
| * We try to see if somebody runs our test suite with a shell that |
| does not support "local" like bash/dash does. |
| |
| * An early part of piece-by-piece rewrite of "git bisect" in C. |
| |
| * GSoC to piece-by-piece rewrite "git submodule" in C. |
| |
| * Optimize the code to find shortest unique prefix of object names. |
| |
| * Pathspec-limited revision traversal was taught not to keep finding |
| unneeded differences once it knows two trees are different inside |
| given pathspec. |
| |
| * Conversion from uchar[20] to struct object_id continues. |
| |
| * Code cleanup. |
| |
| * A single-word "unsigned flags" in the diff options is being split |
| into a structure with many bitfields. |
| |
| * TravisCI build updates. |
| |
| * Parts of a test to drive the long-running content filter interface |
| has been split into its own module, hopefully to eventually become |
| reusable. |
| |
| * Drop (perhaps overly cautious) sanity check before using the index |
| read from the filesystem at runtime. |
| |
| Also contains various documentation updates and code clean-ups. |
| |
| |
| Fixes since v2.15 |
| ----------------- |
| |
| * "auto" as a value for the columnar output configuration ought to |
| judge "is the output consumed by humans?" with the same criteria as |
| "auto" for coloured output configuration, i.e. either the standard |
| output stream is going to tty, or a pager is in use. We forgot the |
| latter, which has been fixed. |
| |
| * The experimental "color moved lines differently in diff output" |
| feature was buggy around "ignore whitespace changes" edges, which |
| has been corrected. |
| |
| * Instead of using custom line comparison and hashing functions to |
| implement "moved lines" coloring in the diff output, use the pair |
| of these functions from lower-layer xdiff/ code. |
| |
| * Some codepaths did not check for errors when asking what branch the |
| HEAD points at, which have been fixed. |
| |
| * "git commit", after making a commit, did not check for errors when |
| asking on what branch it made the commit, which has been corrected. |
| |
| * "git status --ignored -u" did not stop at a working tree of a |
| separate project that is embedded in an ignored directory and |
| listed files in that other project, instead of just showing the |
| directory itself as ignored. |
| |
| * A broken access to object databases in recent update to "git grep |
| --recurse-submodules" has been fixed. |
| |
| * A recent regression in "git rebase -i" that broke execution of git |
| commands from subdirectories via "exec" instruction has been fixed. |
| |
| * A (possibly flakey) test fix. |
| |
| * "git check-ref-format --branch @{-1}" bit a "BUG()" when run |
| outside a repository for obvious reasons; clarify the documentation |
| and make sure we do not even try to expand the at-mark magic in |
| such a case, but still call the validation logic for branch names. |
| |
| * "git fetch --recurse-submodules" now knows that submodules can be |
| moved around in the superproject in addition to getting updated, |
| and finds the ones that need to be fetched accordingly. |
| |
| * Command line completion (in contrib/) update. |
| |
| * Description of blame.{showroot,blankboundary,showemail,date} |
| configuration variables have been added to "git config --help". |
| |
| * After an error from lstat(), diff_populate_filespec() function |
| sometimes still went ahead and used invalid data in struct stat, |
| which has been fixed. |
| |
| * UNC paths are also relevant in Cygwin builds and they are now |
| tested just like Mingw builds. |
| |
| * Correct start-up sequence so that a repository could be placed |
| immediately under the root directory again (which was broken at |
| around Git 2.13). |
| |
| * The credential helper for libsecret (in contrib/) has been improved |
| to allow possibly prompting the end user to unlock secrets that are |
| currently locked (otherwise the secrets may not be loaded). |
| |
| * MinGW updates. |
| |
| * Error checking in "git imap-send" for empty response has been |
| improved. |
| |
| * Recent update to the refs infrastructure implementation started |
| rewriting packed-refs file more often than before; this has been |
| optimized again for most trivial cases. |
| (merge 7c6bd25c7d mh/avoid-rewriting-packed-refs later to maint). |
| |
| * Some error messages did not quote filenames shown in it, which have |
| been fixed. |
| |
| * "git rebase -i" recently started misbehaving when a submodule that |
| is configured with 'submodule.<name>.ignore' is dirty; this has |
| been corrected. |
| |
| * Building with NO_LIBPCRE1_JIT did not disable it, which has been fixed. |
| |
| * We used to add an empty alternate object database to the system |
| that does not help anything; it has been corrected. |
| |
| * Doc update around use of "format-patch --subject-prefix" etc. |
| |
| * A fix for an ancient bug in "git apply --ignore-space-change" codepath. |
| |
| * Clarify and enhance documentation for "merge-base --fork-point", as |
| it was clear what it computed but not why/what for. |
| (merge 6d1700b8af jc/merge-base-fork-point-doc later to maint). |
| |
| * A few scripts (both in production and tests) incorrectly redirected |
| their error output. These have been corrected. |
| (merge eadf1c8f45 tz/redirect-fix later to maint). |
| |
| * "git notes" sent its error message to its standard output stream, |
| which was corrected. |
| (merge 89b9e31dd5 tz/notes-error-to-stderr later to maint). |
| |
| * The three-way merge performed by "git cherry-pick" was confused |
| when a new submodule was added in the meantime, which has been |
| fixed (or "papered over"). |
| (merge c641ca6707 sb/test-cherry-pick-submodule-getting-in-a-way later to maint). |
| |
| * The sequencer machinery (used by "git cherry-pick A..B", and "git |
| rebase -i", among other things) would have lost a commit if stopped |
| due to an unlockable index file, which has been fixed. |
| (merge bd58886775 pw/sequencer-recover-from-unlockable-index later to maint). |
| |
| * "git apply --inaccurate-eof" when used with "--ignore-space-change" |
| triggered an internal sanity check, which has been fixed. |
| (merge 4855de1233 rs/apply-inaccurate-eof-with-incomplete-line later to maint). |
| |
| * Command line completion (in contrib/) has been taught about the |
| "--copy" option of "git branch". |
| (merge 41ca0f773e tz/complete-branch-copy later to maint). |
| |
| * When "git rebase" prepared an mailbox of changes and fed it to "git |
| am" to replay them, it was confused when a stray "From " happened |
| to be in the log message of one of the replayed changes. This has |
| been corrected. |
| (merge ae3b2b04bb ew/rebase-mboxrd later to maint). |
| |
| * There was a recent semantic mismerge in the codepath to write out a |
| section of a configuration section, which has been corrected. |
| (merge 782c030ea2 rs/config-write-section-fix later to maint). |
| |
| * Mentions of "git-rebase" and "git-am" (dashed form) still remained |
| in end-user visible strings emitted by the "git rebase" command; |
| they have been corrected. |
| (merge 82cb775c06 ks/rebase-no-git-foo later to maint). |
| |
| * Contrary to the documentation, "git pull -4/-6 other-args" did not |
| ask the underlying "git fetch" to go over IPv4/IPv6, which has been |
| corrected. |
| (merge ffb4568afe sw/pull-ipv46-passthru later to maint). |
| |
| * Other minor doc, test and build updates and code cleanups. |
| (merge c5e3bc6ec4 sd/branch-copy later to maint). |