Merge branch 'js/reset-usage'
[gitweb.git] / Documentation / RelNotes / 2.11.0.txt
index 8b29f7712debb7b4599f55a2264602c4e506de41..8608e86e4ebb3d86e4af4eba5e974e5194126202 100644 (file)
@@ -38,6 +38,54 @@ UI, Workflows & Features
    lacked an equivalent mechanism to run the "Git-to-outside-world"
    conversion.  The command learned the "--filters" option to do so.
 
+ * Output from "git diff" can be made easier to read by selecting
+   which lines are common and which lines are added/deleted
+   intelligently when the lines before and after the changed section
+   are the same.  A command line option is added to help with the
+   experiment to find a good heuristics.
+
+ * In some projects, it is common to use "[RFC PATCH]" as the subject
+   prefix for a patch meant for discussion rather than application.  A
+   new option "--rfc" was a short-hand for "--subject-prefix=RFC PATCH"
+   to help the participants of such projects.
+
+ * "git add --chmod=+x <pathspec>" added recently only toggled the
+   executable bit for paths that are either new or modified. This has
+   been corrected to flip the executable bit for all paths that match
+   the given pathspec.
+
+ * When "git format-patch --stdout" output is placed as an in-body
+   header and it uses the RFC2822 header folding, "git am" failed to
+   put the header line back into a single logical line.  The
+   underlying "git mailinfo" was taught to handle this properly.
+
+ * "gitweb" can spawn "highlight" to show blob contents with
+   (programming) language-specific syntax highlighting, but only
+   when the language is known.  "highlight" can however be told
+   to make the guess itself by giving it "--force" option, which
+   has been enabled.
+
+ * "git gui" l10n to Portuguese.
+
+ * When given an abbreviated object name that is not (or more
+   realistically, "no longer") unique, we gave a fatal error
+   "ambiguous argument".  This error is now accompanied by hints that
+   lists the objects that begins with the given prefix.  During the
+   course of development of this new feature, numerous minor bugs were
+   uncovered and corrected, the most notable one of which is that we
+   gave "short SHA1 xxxx is ambiguous." twice without good reason.
+
+ * "git log rev^..rev" is an often-used revision range specification
+   to show what was done on a side branch merged at rev.  This has
+   gained a short-hand "rev^-1".  In general "rev^-$n" is the same as
+   "^rev^$n rev", i.e. what has happened on other branches while the
+   history leading to nth parent was looking the other way.
+
+ * In recent versions of cURL, GSSAPI credential delegation is
+   disabled by default due to CVE-2011-2192; introduce a configuration
+   to selectively allow enabling this.
+   (merge 26a7b23429 ps/http-gssapi-cred-delegation later to maint).
+
 
 Performance, Internal Implementation, Development Support etc.
 
@@ -82,6 +130,19 @@ Performance, Internal Implementation, Development Support etc.
    existing pack bitmap; now they are and as the result they have
    become faster.
 
+ * The codepath in "git fsck" to detect malformed tree objects has
+   been updated not to die but keep going after detecting them.
+
+ * We call "qsort(array, nelem, sizeof(array[0]), fn)", and most of
+   the time third parameter is redundant.  A new QSORT() macro lets us
+   omit it.
+
+ * "git pack-objects" in a repository with many packfiles used to
+   spend a lot of time looking for/at objects in them; the accesses to
+   the packfiles are now optimized by checking the most-recently-used
+   packfile first.
+   (merge c9af708b1a jk/pack-objects-optim-mru later to maint).
+
 
 Also contains various documentation updates and code clean-ups.
 
@@ -123,35 +184,28 @@ notes for details).
    we are sending an object C, we want a tag B that directly points at
    C but also a tag A that points at the tag B.  We used to miss the
    intermediate tag B in some cases.
-   (merge b773dde jk/pack-tag-of-tag later to maint).
 
  * Update Japanese translation for "git-gui".
-   (merge 02748bc sy/git-gui-i18n-ja later to maint).
 
  * "git fetch http::/site/path" did not die correctly and segfaulted
    instead.
-   (merge d63ed6e jk/fix-remote-curl-url-wo-proto later to maint).
 
  * "git commit-tree" stopped reading commit.gpgsign configuration
    variable that was meant for Porcelain "git commit" in Git 2.9; we
    forgot to update "git gui" to look at the configuration to match
    this change.
-   (merge f14a310 js/git-gui-commit-gpgsign later to maint).
 
  * "git add --chmod=+x" added recently lacked documentation, which has
    been corrected.
-   (merge 7ef7903 et/add-chmod-x later to maint).
 
  * "git log --cherry-pick" used to include merge commits as candidates
    to be matched up with other commits, resulting a lot of wasted time.
    The patch-id generation logic has been updated to ignore merges to
    avoid the wastage.
-   (merge 7c81040 jk/patch-ids-no-merges later to maint).
 
  * The http transport (with curl-multi option, which is the default
    these days) failed to remove curl-easy handle from a curlm session,
    which led to unnecessary API failures.
-   (merge 2abc848 ew/http-do-not-forget-to-call-curl-multi-remove-handle later to maint).
 
  * There were numerous corner cases in which the configuration files
    are read and used or not read at all depending on the directory a
@@ -170,13 +224,11 @@ notes for details).
  * Performance tests done via "t/perf" did not use the same set of
    build configuration if the user relied on autoconf generated
    configuration.
-   (merge cd5c281 ks/perf-build-with-autoconf later to maint).
 
  * "git format-patch --base=..." feature that was recently added
    showed the base commit information after "-- " e-mail signature
    line, which turned out to be inconvenient.  The base information
    has been moved above the signature line.
-   (merge 480871e jt/format-patch-base-info-above-sig later to maint).
 
  * More i18n.
    (merge 43073f8 va/i18n later to maint).
@@ -188,17 +240,150 @@ notes for details).
    than nice.  As the underlying commands used inside "git rebase"
    would fail with a more meaningful error message and advice text
    when the bogus ident matters, this extra check was removed.
-   (merge 1e461c4 jk/rebase-i-drop-ident-check later to maint).
 
  * "git gc --aggressive" used to limit the delta-chain length to 250,
    which is way too deep for gaining additional space savings and is
    detrimental for runtime performance.  The limit has been reduced to
    50.
-   (merge 07e7dbf jk/reduce-gc-aggressive-depth later to maint).
+
+ * Documentation for individual configuration variables to control use
+   of color (like `color.grep`) said that their default value is
+   'false', instead of saying their default is taken from `color.ui`.
+   When we updated the default value for color.ui from 'false' to
+   'auto' quite a while ago, all of them broke.  This has been
+   corrected.
+
+ * The pretty-format specifier "%C(auto)" used by the "log" family of
+   commands to enable coloring of the output is taught to also issue a
+   color-reset sequence to the output.
+   (merge c99ad27 rs/c-auto-resets-attributes later to maint).
+
+ * A shell script example in check-ref-format documentation has been
+   fixed.
+
+ * "git checkout <word>" does not follow the usual disambiguation
+   rules when the <word> can be both a rev and a path, to allow
+   checking out a branch 'foo' in a project that happens to have a
+   file 'foo' in the working tree without having to disambiguate.
+   This was poorly documented and the check was incorrect when the
+   command was run from a subdirectory.
+
+ * Some codepaths in "git diff" used regexec(3) on a buffer that was
+   mmap(2)ed, which may not have a terminating NUL, leading to a read
+   beyond the end of the mapped region.  This was fixed by introducing
+   a regexec_buf() helper that takes a <ptr,len> pair with REG_STARTEND
+   extension.
+   (merge b7d36ff js/regexec-buf later to maint).
+
+ * The procedure to build Git on Mac OS X for Travis CI hardcoded the
+   internal directory structure we assumed HomeBrew uses, which was a
+   no-no.  The procedure has been updated to ask HomeBrew things we
+   need to know to fix this.
+
+ * When "git rebase -i" is given a broken instruction, it told the
+   user to fix it with "--edit-todo", but didn't say what the step
+   after that was (i.e. "--continue").
+
+ * Documentation around tools to import from CVS was fairly outdated.
+
+ * "git clone --recurse-submodules" lost the progress eye-candy in
+   recent update, which has been corrected.
+
+ * A low-level function verify_packfile() was meant to show errors
+   that were detected without dying itself, but under some conditions
+   it didn't and died instead, which has been fixed.
+   (merge a9445d859e jk/verify-packfile-gently later to maint).
+
+ * When "git fetch" tries to find where the history of the repository
+   it runs in has diverged from what the other side has, it has a
+   mechanism to avoid digging too deep into irrelevant side branches.
+   This however did not work well over the "smart-http" transport due
+   to a design bug, which has been fixed.
+   (merge 06b3d386e0 jt/fetch-pack-in-vain-count-with-stateless later to maint).
+
+ * In the codepath that comes up with the hostname to be used in an
+   e-mail when the user didn't tell us, we looked at ai_canonname
+   field in struct addrinfo without making sure it is not NULL first.
+
+ * "git worktree", even though it used the default_abbrev setting that
+   ought to be affected by core.abbrev configuration variable, ignored
+   the variable setting.  The command has been taught to read the
+   default set of configuration variables to correct this.
+   (merge d49028e6e7 jc/worktree-config later to maint).
+
+ * "git init" tried to record core.worktree in the repository's
+   'config' file when GIT_WORK_TREE environment variable was set and
+   it was different from where GIT_DIR appears as ".git" at its top,
+   but the logic was faulty when .git is a "gitdir:" file that points
+   at the real place, causing trouble in working trees that are
+   managed by "git worktree".  This has been corrected.
+
+ * Codepaths that read from an on-disk loose object were too loose in
+   validating what they are reading is a proper object file and
+   sometimes read past the data they read from the disk, which has
+   been corrected.  H/t to Gustavo Grieco for reporting.
+   (merge d21f842690 jc/verify-loose-object-header later to maint).
+
+ * The original command line syntax for "git merge", which was "git
+   merge <msg> HEAD <parent>...", has been deprecated for quite some
+   time, and "git gui" was the last in-tree user of the syntax.  This
+   is finally fixed, so that we can move forward with the deprecation.
+   (merge ff65e796f0 rs/git-gui-use-modern-git-merge-syntax later to maint).
+
+ * An author name, that spelled a backslash-quoted double quote in the
+   human readable part "My \"double quoted\" name", was not unquoted
+   correctly while applying a patch from a piece of e-mail.
+   (merge f357e5de31 kd/mailinfo-quoted-string later to maint).
+
+ * Doc update to clarify what "log -3 --reverse" does.
+   (merge 04be69478f pb/rev-list-reverse-with-count later to maint).
+
+ * Almost everybody uses DEFAULT_ABBREV to refer to the default
+   setting for the abbreviation, but "git blame" peeked into
+   underlying variable bypassing the macro for no good reason.
+   (merge 5293284b4d jc/blame-abbrev later to maint).
+
+ * The "graph" API used in "git log --graph" miscounted the number of
+   output columns consumed so far when drawing a padding line, which
+   has been fixed; this did not affect any existing code as nobody
+   tried to write anything after the padding on such a line, though.
+   (merge 1647793524 jk/graph-padding-fix later to maint).
+
+ * The code that parses the format parameter of for-each-ref command
+   has seen a micro-optimization.
+   (merge e94ce1394e sg/ref-filter-parse-optim later to maint).
+
+ * When we started cURL to talk to imap server when a new enough
+   version of cURL library is available, we forgot to explicitly add
+   imap(s):// before the destination.  To some folks, that didn't work
+   and the library tried to make HTTP(s) requests instead.
+   (merge d2d07ab861 ak/curl-imap-send-explicit-scheme later to maint).
+
+ * The ./configure script generated from configure.ac was taught how
+   to detect support of SSL by libcurl better.
+   (merge 924b7eb1c9 dp/autoconf-curl-ssl later to maint).
+
+ * The command-line completion script (in contrib/) learned to
+   complete "git cmd ^mas<HT>" to complete the negative end of
+   reference to "git cmd ^master".
+   (merge 49416ad22a cp/completion-negative-refs later to maint).
+
+ * The existing "git fetch --depth=<n>" option was hard to use
+   correctly when making the history of an existing shallow clone
+   deeper.  A new option, "--deepen=<n>", has been added to make this
+   easier to use.  "git clone" also learned "--shallow-since=<date>"
+   and "--shallow-exclude=<tag>" options to make it easier to specify
+   "I am interested only in the recent N months worth of history" and
+   "Give me only the history since that version".
+   (merge cccf74e2da nd/shallow-deepen later to maint).
+
+ * It is a common mistake to say "git blame --reverse OLD path",
+   expecting that the command line is dwimmed as if asking how lines
+   in path in an old revision OLD have survived up to the current
+   commit.
+   (merge e1d09701a4 jc/blame-reverse later to maint).
 
  * Other minor doc, test and build updates and code cleanups.
-   (merge e78d57e bw/pathspec-remove-unused-extern-decl later to maint).
-   (merge ce25e4c rs/checkout-some-states-are-const later to maint).
-   (merge a8342a4 rs/strbuf-remove-fix later to maint).
-   (merge b56aa5b rs/unpack-trees-reduce-file-scope-global later to maint).
-   (merge 5efc60c mr/vcs-svn-printf-ulong later to maint).
+   (merge a22ae75 rs/cocci later to maint).
+   (merge 45ccef87b3 rs/copy-array later to maint).
+   (merge 8201688ecd dt/mailinfo later to maint).