Merge branch 'sb/sha1-file-cleanup'
[gitweb.git] / Documentation / RelNotes / 2.14.0.txt
index 93f06541096a1985bc649e376ea3f6def1050746..4246c68ff51eda9b4c32b5976816820999017c02 100644 (file)
@@ -1,7 +1,7 @@
 Git 2.14 Release Notes
 ======================
 
-Backward compatibility notes.
+Backward compatibility notes and other notable changes.
 
  * Use of an empty string as a pathspec element that is used for
    'everything matches' is still warned and Git asks users to use a
@@ -22,6 +22,12 @@ Backward compatibility notes.
    diff output has finished, and the "indent heuristics" has now
    become the default.
 
+ * Git can now be built with PCRE v2 instead of v1 of the PCRE
+   library. Replace USE_LIBPCRE=YesPlease with USE_LIBPCRE2=YesPlease
+   in existing build scripts to build against the new version.  As the
+   upstream PCRE maintainer has abandoned v1 maintenance for all but
+   the most critical bug fixes, use of v2 is recommended.
+
 
 Updates since v2.13
 -------------------
@@ -53,16 +59,16 @@ UI, Workflows & Features
    when the $sha1 names an object at the tip of an advertised ref,
    even when the other side hasn't enabled allowTipSHA1InWant.
 
- * The recently introduced "[includeIf "gitdir:$dir"] path=..."
-   mechanism has further been taught to take symlinks into account.
-   The directory "$dir" specified in "gitdir:$dir" may be a symlink to
-   a real location, not something that $(getcwd) may return.  In such
-   a case, a realpath of "$dir" is compared with the real path of the
-   current repository to determine if the contents from the named path
-   should be included.
+ * The "[includeIf "gitdir:$dir"] path=..." mechanism introduced in
+   2.13.0 would canonicalize the path of the gitdir being matched,
+   and did not match e.g. "gitdir:~/work/*" against a repo in
+   "~/work/main" if "~/work" was a symlink to "/mnt/storage/work".
+   Now we match both the resolved canonical path and what "pwd" would
+   show. The include will happen if either one matches.
 
- * Make the "indent" heuristics the default in "diff" and diff.indentHeuristics
-   configuration variable an escape hatch for those who do no want it.
+ * The "indent" heuristics is now the default in "diff". The
+   diff.indentHeuristic configuration variable can be set to "false"
+   for those who do not want it.
 
  * Many commands learned to pay attention to submodule.recurse
    configuration.
@@ -91,8 +97,8 @@ UI, Workflows & Features
    would appear as a not-quite-initialized submodule to others.  We
    learned to give warnings when this happens.
 
- * "git status" learned to optionally give how many stash entries the
-   user has in its output.
+ * "git status" learned to optionally give how many stash entries there
+   are in its output.
 
  * "git status" has long shown essentially the same message as "git
    commit"; the message it gives while preparing for the root commit,
@@ -101,13 +107,21 @@ UI, Workflows & Features
    (rather than the commit the user is preparing for, which is more in
    line with the focus of "git commit").
 
- * "git send-email" learned to overcome some SMTP server limitation
-   that does not allow many pieces of e-mails to be sent over a single
-   session.
+ * "git send-email" now has --batch-size and --relogin-delay options
+    which can be used to overcome limitations on SMTP servers that
+    restrict on how many of e-mails can be sent in a single session.
 
  * An old message shown in the commit log template was removed, as it
    has outlived its usefulness.
 
+ * "git pull --rebase --recurse-submodules" learns to rebase the
+   branch in the submodules to an updated base.
+
+ * "git log" learned -P as a synonym for --perl-regexp, "git grep"
+   already had such a synonym.
+
+ * "git log" didn't understand --regexp-ignore-case when combined with
+   --perl-regexp. This has been fixed.
 
 Performance, Internal Implementation, Development Support etc.
 
@@ -217,6 +231,31 @@ Performance, Internal Implementation, Development Support etc.
    object database?" query that is used to derive the length of prefix
    an object name is uniquely abbreviated to.
 
+ * The hashmap API has been updated so that data to customize the
+   behaviour of the comparison function can be specified at the time a
+   hashmap is initialized.
+
+ * The "collision detecting" SHA-1 implementation shipped with 2.13 is
+   now integrated into git.git as a submodule (the first submodule to
+   ship with git.git). Clone git.git with --recurse-submodules to get
+   it. For now a non-submodule copy of the same code is also shipped
+   as part of the tree.
+
+ * A recent update made it easier to use "-fsanitize=" option while
+   compiling but supported only one sanitize option.  Allow more than
+   one to be combined, joined with a comma, like "make SANITIZE=foo,bar".
+
+ * Use "p4 -G" to make "p4 changes" output more Python-friendly
+   to parse.
+
+ * We started using "%" PRItime, imitating "%" PRIuMAX and friends, as
+   a way to format the internal timestamp value, but this does not
+   play well with gettext(1) i18n framework, and causes "make pot"
+   that is run by the l10n coordinator to create a broken po/git.pot
+   file.  This is a possible workaround for that problem.
+
+ * It turns out that Cygwin also needs the fopen() wrapper that
+   returns failure when a directory is opened for reading.
 
 Also contains various documentation updates and code clean-ups.
 
@@ -418,44 +457,61 @@ notes for details).
  * A recent regression in "git rebase -i" has been fixed and tests
    that would have caught it and others have been added.
 
- * An unaligned 32-bit access in pack-bitmap code ahs been corrected.
+ * An unaligned 32-bit access in pack-bitmap code has been corrected.
 
  * Tighten error checks for invalid "git apply" input.
 
- * The split index code did not honor core.sharedrepository setting
+ * The split index code did not honor core.sharedRepository setting
    correctly.
 
  * The Makefile rule in contrib/subtree for building documentation
    learned to honour USE_ASCIIDOCTOR just like the main documentation
    set does.
 
- * Update the sha1dc again to fix portability glitches.
-
  * Code clean-up to fix possible buffer over-reading.
-   (merge 8bc172e5f2 rs/apply-avoid-over-reading later to maint).
 
  * A few tests that tried to verify the contents of push certificates
    did not use 'git rev-parse' to formulate the line to look for in
    the certificate correctly.
 
  * Update the character width tables.
-   (merge 7560aacd7c bb/unicode-10.0 later to maint).
 
  * After "git branch --move" of the currently checked out branch, the
    code to walk the reflog of HEAD via "log -g" and friends
    incorrectly stopped at the reflog entry that records the renaming
    of the branch.
-   (merge e30d463d45 jk/reflog-walk-maint later to maint).
 
  * The rewrite of "git branch --list" using for-each-ref's internals
    that happened in v2.13 regressed its handling of color.branch.local;
    this has been fixed.
-   (merge 5b5c9c3e19 kn/ref-filter-branch-list later to maint).
+
+ * The build procedure has been improved to allow building and testing
+   Git with address sanitizer more easily.
+   (merge 425ca6710b jk/build-with-asan later to maint).
+
+ * On Cygwin, similar to Windows, "git push //server/share/repository"
+   ought to mean a repository on a network share that can be accessed
+   locally, but this did not work correctly due to stripping the double
+   slashes at the beginning.
+
+ * The progress meter did not give a useful output when we haven't had
+   0.5 seconds to measure the throughput during the interval.  Instead
+   show the overall throughput rate at the end, which is a much more
+   useful number.
+
+ * Code clean-up, that makes us in sync with Debian by one patch.
+
+ * We run an early part of "git gc" that deals with refs before
+   daemonising (and not under lock) even when running a background
+   auto-gc, which caused multiple gc processes attempting to run the
+   early part at the same time.  This is now prevented by running the
+   early part also under the GC lock.
+
+ * A recent update broke an alias that contained an uppercase letter.
 
  * Other minor doc, test and build updates and code cleanups.
-   (merge 3f9c637ec7 pw/unquote-path-in-git-pm later to maint).
-   (merge 669638fe7a ks/typofix-commit-c-comment later to maint).
    (merge 5053313562 rs/urlmatch-cleanup later to maint).
    (merge 42c78a216e rs/use-div-round-up later to maint).
    (merge 5e8d2729ae rs/wt-status-cleanup later to maint).
-   (merge 01826066b0 ks/fix-rebase-doc-picture later to maint).
+   (merge bc9b7e207f as/diff-options-grammofix later to maint).
+   (merge ac05222b31 ah/patch-id-doc later to maint).