0a8b3ea601e7068f0963e921ea20272ec3d7cfed
   1Git 2.9 Release Notes
   2=====================
   3
   4Backward compatibility note
   5---------------------------
   6
   7The end-user facing Porcelain level commands in the "git diff" and
   8"git log" by default enables the rename detection; you can still use
   9"diff.renames" configuration variable to disable this.
  10
  11
  12Updates since v2.8
  13------------------
  14
  15UI, Workflows & Features
  16
  17 * The end-user facing Porcelain level commands like "diff" and "log"
  18   now enables the rename detection by default.
  19
  20 * The credential.helper configuration variable is cumulative and
  21   there is no good way to override it from the command line.  As
  22   a special case, giving an empty string as its value now serves
  23   as the signal to clear the values specified in various files.
  24
  25 * A new "interactive.diffFilter" configuration can be used to
  26   customize the diff shown in "git add -i" session.
  27
  28 * "git p4" now allows P4 author names to be mapped to Git author
  29   names.
  30
  31 * "git rebase -x" can be used without passing "-i" option.
  32
  33 * "git -c credential.<var>=<value> submodule" can now be used to
  34   propagate configuration variables related to credential helper
  35   down to the submodules.
  36
  37 * "git tag" can create an annotated tag without explicitly given an
  38   "-a" (or "-s") option (i.e. when a tag message is given).  A new
  39   configuration variable, tag.forceSignAnnotated, can be used to tell
  40   the command to create signed tag in such a situation.
  41
  42
  43Performance, Internal Implementation, Development Support etc.
  44
  45 * The embedded args argv-array in the child process is used to build
  46   the command line to run pack-objects instead of using a separate
  47   array of strings.
  48   (merge 65a3629 mp/upload-pack-use-embedded-args later to maint).
  49
  50 * A test for tags has been restructured so that more parts of it can
  51   easily be run on a platform without a working GnuPG.
  52
  53 * The startup_info data, which records if we are working inside a
  54   repository (among other things), are now uniformly available to Git
  55   subcommand implementations, and Git avoids attempting to touch
  56   references when we are not in a repository.
  57   (merge 11e6b3f jk/startup-info later to maint).
  58
  59 * The command line argument parser for "receive-pack" has been
  60   rewritten to use parse-options.
  61
  62 * A major part of "git submodule update" has been ported to C to take
  63   advantage of the recently added framework to run download tasks in
  64   parallel.
  65
  66 * Rename bunch of tests on "git clone" for better organization.
  67   (merge 8fbb03a sb/clone-t57-t56 later to maint).
  68
  69 * The tests that involve running httpd leaked the system-wide
  70   configuration in /etc/gitconfig to the tested environment.
  71   (merge 1fad503 jk/test-httpd-config-nosystem later to maint).
  72
  73
  74Also contains various documentation updates and code clean-ups.
  75
  76
  77Fixes since v2.8
  78----------------
  79
  80Unless otherwise noted, all the fixes since v2.8 in the maintenance
  81track are contained in this release (see the maintenance releases'
  82notes for details).
  83
  84 * "git config --get-urlmatch", unlike other variants of the "git
  85   config --get" family, did not signal error with its exit status
  86   when there was no matching configuration.
  87   (merge 24990b2 jk/config-get-urlmatch later to maint).
  88
  89 * The "--local-env-vars" and "--resolve-git-dir" options of "git
  90   rev-parse" failed to work outside a repository when the command's
  91   option parsing was rewritten in 1.8.5 era.
  92   (merge fc7d47f jk/rev-parse-local-env-vars later to maint).
  93
  94 * "git index-pack --keep[=<msg>] pack-$name.pack" simply did not work.
  95   (merge 0e94242 jc/maint-index-pack-keep later to maint).
  96
  97 * Fetching of history by naming a commit object name directly didn't
  98   work across remote-curl transport.
  99   (merge 754ecb1 gf/fetch-pack-direct-object-fetch later to maint).
 100
 101 * A small memory leak in an error codepath has been plugged in xdiff
 102   code.
 103   (merge 87f1625 rj/xdiff-prepare-plug-leak-on-error-codepath later to maint).
 104
 105 * strbuf_getwholeline() did not NUL-terminate the buffer on certain
 106   corner cases in its error codepath.
 107   (merge b709043 jk/getwholeline-getdelim-empty later to maint).
 108
 109 * "git mergetool" did not work well with conflicts that both sides
 110   deleted.
 111   (merge a298604 da/mergetool-delete-delete-conflict later to maint).
 112
 113 * "git send-email" had trouble parsing alias file in mailrc format
 114   when lines in it had trailing whitespaces on them.
 115   (merge a277d1e jk/send-email-rtrim-mailrc-alias later to maint).
 116
 117 * When "git merge --squash" stopped due to conflict, the concluding
 118   "git commit" failed to read in the SQUASH_MSG that shows the log
 119   messages from all the squashed commits.
 120   (merge b64c1e0 ss/commit-squash-msg later to maint).
 121
 122 * "git merge FETCH_HEAD" dereferenced NULL pointer when merging
 123   nothing into an unborn history (which is arguably unusual usage,
 124   which perhaps was the reason why nobody noticed it).
 125   (merge b84e65d jv/merge-nothing-into-void later to maint).
 126
 127 * Other minor clean-ups and documentation updates
 128   (merge aed7480 mm/lockfile-error-message later to maint).
 129   (merge bfee614 jc/index-pack later to maint).
 130   (merge f870899 ss/exc-flag-is-a-collection-of-bits later to maint).
 131   (merge dde7891 pb/t7502-drop-dup later to maint).
 132   (merge 3bd1b51 cc/doc-recommend-performance-trace-to-file later to maint).
 133   (merge 7d5e9c9 jk/credential-cache-comment-exit later to maint).