Merge branch 'js/bisect-helper-check-get-oid-return-value' into maint
[gitweb.git] / Documentation / RelNotes / 2.21.0.txt
index 5ad2233c9950b1b3d0c3b558ac9c81bb3b7cf2f0..7a49deddf32aa27a5fe4298841b86546afdd33ad 100644 (file)
@@ -4,6 +4,14 @@ Git 2.21 Release Notes
 Backward Compatibility Notes
 ----------------------------
 
+ * Historically, the "-m" (mainline) option can only be used for "git
+   cherry-pick" and "git revert" when working with a merge commit.
+   This version of Git no longer warns or errors out when working with
+   a single-parent commit, as long as the argument to the "-m" option
+   is 1 (i.e. it has only one parent, and the request is to pick or
+   revert relative to that first parent).  Scripts that relied on the
+   behaviour may get broken with this change.
+
 
 Updates since v2.20
 -------------------
@@ -11,14 +19,14 @@ Updates since v2.20
 UI, Workflows & Features
 
  * The "http.version" configuration variable can be used with recent
-   enough cURL library to force the version of HTTP used to talk when
-   fetching and pushing.
+   enough versions of cURL library to force the version of HTTP used
+   to talk when fetching and pushing.
 
  * Small fixes and features for fast-export and fast-import, mostly on
-   the fast-export side.
+   the fast-export side has been made.
 
  * "git push $there $src:$dst" rejects when $dst is not a fully
-   qualified refname and not clear what the end user meant.  The
+   qualified refname and it is not clear what the end user meant.  The
    codepath has been taught to give a clearer error message, and also
    guess where the push should go by taking the type of the pushed
    object into account (e.g. a tag object would want to go under
@@ -27,7 +35,8 @@ UI, Workflows & Features
  * "git checkout [<tree-ish>] path..." learned to report the number of
    paths that have been checked out of the index or the tree-ish,
    which gives it the same degree of noisy-ness as the case in which
-   the command checks out a branch.
+   the command checks out a branch.  "git checkout -m <pathspec>" to
+   undo conflict resolution gives a similar message.
 
  * "git quiltimport" learned "--keep-non-patch" option.
 
@@ -62,14 +71,24 @@ UI, Workflows & Features
  * "git instaweb" learned to drive http.server that comes with
    "batteries included" Python installation (both Python2 & 3).
 
+ * A new encoding UTF-16LE-BOM has been invented to force encoding to
+   UTF-16 with BOM in little endian byte order, which cannot be directly
+   generated by using iconv.
+
+ * A new date format "--date=human" that morphs its output depending
+   on how far the time is from the current time has been introduced.
+   "--date=auto:human" can be used to use this new format (or any
+   existing format) when the output is going to the pager or to the
+   terminal, and otherwise the default format.
+
 
 Performance, Internal Implementation, Development Support etc.
 
  * Code clean-up with optimization for the codepath that checks
    (non-)existence of loose objects.
 
- * More codepaths become aware of working with in-core repository
-   instance other than the default "the_repository".
+ * More codepaths have become aware of working with in-core repository
+   instances other than the default "the_repository".
 
  * The "strncat()" function is now among the banned functions.
 
@@ -86,7 +105,6 @@ Performance, Internal Implementation, Development Support etc.
 
  * Flaky tests can now be repeatedly run under load with the
    "--stress" option.
-   (merge fb7d1e3ac8 sg/stress-test later to maint).
 
  * Documentation/Makefile is getting prepared for manpage
    localization.
@@ -107,13 +125,13 @@ Performance, Internal Implementation, Development Support etc.
  * The in-core repository instances are passed through more codepaths.
 
  * Update the protocol message specification to allow only the limited
-   use of scaled quantities.  This is ensure potential compatibility
-   issues will not go out of hand.
+   use of scaled quantities.  This is to ensure potential compatibility
+   issues will not get out of hand.
 
  * Micro-optimize the code that prepares commit objects to be walked
    by "git rev-list" when the commit-graph is available.
 
- * "git fetch" and "git upload-pack" learned to send all exchange over
+ * "git fetch" and "git upload-pack" learned to send all exchanges over
    the sideband channel while talking the v2 protocol.
 
  * The codepath to write out commit-graph has been optimized by
@@ -124,6 +142,51 @@ Performance, Internal Implementation, Development Support etc.
 
  * Cocci rules have been updated to encourage use of strbuf_addbuf().
 
+ * "git rebase --merge" has been reimplemented by reusing the internal
+   machinery used for "git rebase -i".
+
+ * More code in "git bisect" has been rewritten in C.
+
+ * Instead of going through "git-rebase--am" scriptlet to use the "am"
+   backend, the built-in version of "git rebase" learned to drive the
+   "am" backend directly.
+
+ * The assumption to work on the single "in-core index" instance has
+   been reduced from the library-ish part of the codebase.
+
+ * The test lint learned to catch non-portable "sed" options.
+
+ * "git pack-objects" learned another algorithm to compute the set of
+   objects to send, that trades the resulting packfile off to save
+   traversal cost to favor small pushes.
+
+ * The travis CI scripts have been corrected to build Git with the
+   compiler(s) of our choice.
+
+ * "git submodule update" learned to abort early when core.worktree
+   for the submodule is not set correctly to prevent spreading damage.
+
+ * Test suite has been adjusted to run on Azure Pipeline.
+
+ * Running "Documentation/doc-diff x" from anywhere other than the
+   top-level of the working tree did not show the usage string
+   correctly, which has been fixed.
+
+ * Use of the sparse tool got easier to customize from the command
+   line to help developers.
+
+ * A new target "coverage-prove" to run the coverage test under
+   "prove" has been added.
+
+ * A flakey "p4" test has been removed.
+
+ * The code and tests assume that the system supplied iconv() would
+   always use BOM in its output when asked to encode to UTF-16 (or
+   UTF-32), but apparently some implementations output big-endian
+   without BOM.  A compile-time knob has been added to help such
+   systems (e.g. NonStop) to add BOM to the output to increase
+   portability.
+
 
 Fixes since v2.20
 -----------------
@@ -265,7 +328,7 @@ Fixes since v2.20
  * "git add --ignore-errors" did not work as advertised and instead
    worked as an unintended synonym for "git add --renormalize", which
    has been fixed.
-   (merge 9e5da3d055 jk/add-ignore-errors-bit-assignment-fix later to maint).
+   (merge e2c2a37545 jk/add-ignore-errors-bit-assignment-fix later to maint).
 
  * On a case-insensitive filesystem, we failed to compare the part of
    the path that is above the worktree directory in an absolute
@@ -309,6 +372,53 @@ Fixes since v2.20
  * "git fetch" output cleanup.
    (merge dc40b24df4 nd/fetch-compact-update later to maint).
 
+ * "git cat-file --batch" reported a dangling symbolic link by
+   mistake, when it wanted to report that a given name is ambiguous.
+
+ * Documentation around core.crlf has been updated.
+   (merge c9446f0504 jk/autocrlf-overrides-eol-doc later to maint).
+
+ * The documentation of "git commit-tree" said that the command
+   understands "--gpg-sign" in addition to "-S", but the command line
+   parser did not know about the longhand, which has been corrected.
+
+ * "git rebase -x $cmd" did not reject multi-line command, even though
+   the command is incapable of handling such a command.  It now is
+   rejected upfront.
+   (merge c762aada1a pw/rebase-x-sanity-check later to maint).
+
+ * Output from "git help" was not correctly aligned, which has been
+   fixed.
+   (merge 6195a76da4 nd/help-align-command-desc later to maint).
+
+ * The "git submodule summary" subcommand showed shortened commit
+   object names by mechanically truncating them at 7-hexdigit, which
+   has been improved to let "rev-parse --short" scale the length of
+   the abbreviation with the size of the repository.
+   (merge 0586a438f6 sh/submodule-summary-abbrev-fix later to maint).
+
+ * The way the OSX build jobs updates its build environment used the
+   "--quiet" option to "brew update" command, but it wasn't all that
+   quiet to be useful.  The use of the option has been replaced with
+   an explicit redirection to the /dev/null (which incidentally would
+   have worked around a breakage by recent updates to homebrew, which
+   has fixed itself already).
+   (merge a1ccaedd62 sg/travis-osx-brew-breakage-workaround later to maint).
+
+ * "git --work-tree=$there --git-dir=$here describe --dirty" did not
+   work correctly as it did not pay attention to the location of the
+   worktree specified by the user by mistake, which has been
+   corrected.
+   (merge c801170b0c ss/describe-dirty-in-the-right-directory later to maint).
+
+ * "git fetch" over protocol v2 that needs to make a second connection
+   to backfill tags did not clear a variable that holds shallow
+   repository information correctly, leading to an access of freed
+   piece of memory.
+
+ * Some errors from the other side coming over smart HTTP transport
+   were not noticed, which has been corrected.
+
  * Code cleanup, docfix, build fix, etc.
    (merge 89ba9a79ae hb/t0061-dot-in-path-fix later to maint).
    (merge d173e799ea sb/diff-color-moved-config-option-fixup later to maint).
@@ -325,8 +435,17 @@ Fixes since v2.20
    (merge 0650614982 cy/completion-typofix later to maint).
    (merge 6881925ef5 rs/sha1-file-close-mapped-file-on-error later to maint).
    (merge bd8d6f0def en/show-ref-doc-fix later to maint).
-   (merge 1747125e2c cc/parial-clone-doc-typofix later to maint).
+   (merge 1747125e2c cc/partial-clone-doc-typofix later to maint).
    (merge e01378753d cc/fetch-error-message-fix later to maint).
    (merge 54e8c11215 jk/remote-insteadof-cleanup later to maint).
    (merge d609615f48 js/test-git-installed later to maint).
    (merge ba170517be ja/doc-style-fix later to maint).
+   (merge 86fb1c4e77 km/init-doc-typofix later to maint).
+   (merge 5cfd4a9d10 nd/commit-doc later to maint).
+   (merge 9fce19a431 ab/diff-tree-doc-fix later to maint).
+   (merge 2e285e7803 tz/gpg-test-fix later to maint).
+   (merge 5427de960b kl/pretty-doc-markup-fix later to maint).
+   (merge 3815f64b0d js/mingw-host-cpu later to maint).
+   (merge 5fe81438b5 rj/sequencer-sign-off-header-static later to maint).
+   (merge 18a4f6be6b nd/fileno-may-be-macro later to maint).
+   (merge 99e9ab54ab kd/t0028-octal-del-is-377-not-777 later to maint).