set_work_tree: use chdir_notify
[gitweb.git] / Documentation / RelNotes / 2.17.0.txt
index 856796f97952f3af371a842352fb60687665cc2a..d6db0e19cf17ba10700f7b314ecab3c4c51e675e 100644 (file)
@@ -54,17 +54,46 @@ UI, Workflows & Features
    refs/tags/ hierarchy, and allow fast-forwarding otherwise, to
    mitigate the problem.
 
+ * "git status" can spend a lot of cycles to compute the relation
+   between the current branch and its upstream, which can now be
+   disabled with "--no-ahead-behind" option.
+
+ * "git diff" and friends learned funcname patterns for Go language
+   source files.
+
+ * "git send-email" learned "--reply-to=<address>" option.
+
+ * Funcname pattern used for C# now recognizes "async" keyword.
+
+ * In a way similar to how "git tag" learned to honor the pager
+   setting only in the list mode, "git config" learned to ignore the
+   pager setting when it is used for setting values (i.e. when the
+   purpose of the operation is not to "show").
+
 
 Performance, Internal Implementation, Development Support etc.
 
  * More perf tests for threaded grep
 
  * "perf" test output can be sent to codespeed server.
-   (merge 19cf57a92e cc/codespeed later to maint).
 
  * The build procedure for perl/ part has been greatly simplified by
    weaning ourselves off of MakeMaker.
 
+ * Perl 5.8 or greater has been required since Git 1.7.4 released in
+   2010, but we continued to assume some core modules may not exist and
+   used a conditional "eval { require <<module>> }"; we no longer do
+   this.  Some platforms (Fedora/RedHat/CentOS, for example) ship Perl
+   without all core modules by default (e.g. Digest::MD5, File::Temp,
+   File::Spec, Net::Domain, Net::SMTP).  Users on such platforms may
+   need to install these additional modules.
+
+ * As a convenience, we install copies of Perl modules we require which
+   are not part of the core Perl distribution (e.g. Error and
+   Mail::Address).  Users and packagers whose operating system provides
+   these modules can set NO_PERL_CPAN_FALLBACKS to avoid installing the
+   bundled modules.
+
  * In preparation for implementing narrow/partial clone, the machinery
    for checking object connectivity used by gc and fsck has been
    taught that a missing object is OK when it is referenced by a
@@ -87,13 +116,10 @@ Performance, Internal Implementation, Development Support etc.
 
  * The tracing machinery learned to report tweaking of environment
    variables as well.
-   (merge 090a09272a nd/trace-with-env later to maint).
 
  * Update Coccinelle rules to catch and optimize strbuf_addf(&buf, "%s", str)
-   (merge cd9a4b6d93 rs/strbuf-cocci-workaround later to maint).
 
  * Prevent "clang-format" from breaking line after function return type.
-   (merge a3715d43e8 po/clang-format-functype-weight later to maint).
 
  * The sequencer infrastructure is shared across "git cherry-pick",
    "git rebase -i", etc., and has always spawned "git commit" when it
@@ -107,7 +133,6 @@ Performance, Internal Implementation, Development Support etc.
 
  * Avoid mmapping small files while using packed refs (especially ones
    with zero size, which would cause later munmap() to fail).
-   (merge ba41a8b600 kg/packed-ref-cache-fix later to maint).
 
  * Conversion from uchar[20] to struct object_id continues.
 
@@ -122,6 +147,21 @@ Performance, Internal Implementation, Development Support etc.
    like this help use of code analysis tools that targets C++ on our
    codebase.
 
+ * The executable is now built in 'script' phase in Travis CI integration,
+   to follow the established practice, rather than during 'before_script'
+   phase.  This allows the CI categorize the failures better ('failed'
+   is project's fault, 'errored' is build environment's).
+   (merge 3c93b82920 sg/travis-build-during-script-phase later to maint).
+
+ * Writing out the index file when the only thing that changed in it
+   is the untracked cache information is often wasteful, and this has
+   been optimized out.
+
+ * Various pieces of Perl code we have have been cleaned up.
+
+ * Internal API clean-up to allow write_locked_index() optionally skip
+   writing the in-core index when it is not modified.
+
 
 Also contains various documentation updates and code clean-ups.
 
@@ -271,6 +311,47 @@ Fixes since v2.16
  * Y2k20 fix ;-) for our perl scripts.
    (merge a40e06ee33 bw/perl-timegm-timelocal-fix later to maint).
 
+ * Threaded "git grep" has been optimized to avoid allocation in code
+   section that is covered under a mutex.
+   (merge 38ef24dccf rv/grep-cleanup later to maint).
+
+ * "git subtree" script (in contrib/) scripted around "git log", whose
+   output got affected by end-user configuration like log.showsignature
+   (merge 8841b5222c sg/subtree-signed-commits later to maint).
+
+ * While finding unique object name abbreviation, the code may
+   accidentally have read beyond the end of the array of object names
+   in a pack.
+   (merge 21abed500c ds/find-unique-abbrev-optim later to maint).
+
+ * Micro optimization in revision traversal code.
+   (merge ebbed3ba04 ds/mark-parents-uninteresting-optim later to maint).
+
+ * "git commit" used to run "gc --auto" near the end, which was lost
+   when the command was reimplemented in C by mistake.
+   (merge 095c741edd ab/gc-auto-in-commit later to maint).
+
+ * Allow running a couple of tests with "sh -x".
+   (merge c20bf94abc sg/cvs-tests-with-x later to maint).
+
+ * The codepath to replace an existing entry in the index had a bug in
+   updating the name hash structure, which has been fixed.
+   (merge 0e267b7a24 bp/refresh-cache-ent-rehash-fix later to maint).
+
+ * The transfer.fsckobjects configuration tells "git fetch" to
+   validate the data and connected-ness of objects in the received
+   pack; the code to perform this check has been taught about the
+   narrow clone's convention that missing objects that are reachable
+   from objects in a pack that came from a promissor remote is OK.
+
+ * There was an unused file-scope static variable left in http.c when
+   building for versions of libCURL that is older than 7.19.4, which
+   has been fixed.
+   (merge b8fd6008ec rj/http-code-cleanup later to maint).
+
+ * Shell script portability fix.
+   (merge 206a6ae013 ml/filter-branch-portability-fix later to maint).
+
  * Other minor doc, test and build updates and code cleanups.
    (merge e2a5a028c7 bw/oidmap-autoinit later to maint).
    (merge ec3b4b06f8 cl/t9001-cleanup later to maint).
@@ -305,3 +386,13 @@ Fixes since v2.16
    (merge 1316416903 ms/non-ascii-ticks later to maint).
    (merge 878056005e rs/strbuf-read-file-or-whine later to maint).
    (merge 79f0ba1547 jk/strbuf-read-file-close-error later to maint).
+   (merge edfb8ba068 ot/ref-filter-cleanup later to maint).
+   (merge 11395a3b4b jc/test-must-be-empty later to maint).
+   (merge 768b9d6db7 mk/doc-pretty-fill later to maint).
+   (merge 2caa7b8d27 ab/man-sec-list later to maint).
+   (merge 40c17eb184 ks/t3200-typofix later to maint).
+   (merge bd9958c358 dp/merge-strategy-doc-fix later to maint).
+   (merge 9ee0540a40 js/ming-strftime later to maint).
+   (merge 1775e990f7 tz/complete-tag-delete-tagname later to maint).
+   (merge 00a4b03501 rj/warning-uninitialized-fix later to maint).
+   (merge b635ed97a0 jk/attributes-path-doc later to maint).