Documentation / RelNotes / 2.3.0.txton commit Merge branch 'jh/pre-push-sample-no-custom-ifs' (06a8bbb)
   1Git v2.3 Release Notes
   2======================
   3
   4Updates since v2.2
   5------------------
   6
   7Ports
   8
   9 * Recent gcc toolchain on Cygwin started throwing compilation warning,
  10   which has been squelched.
  11
  12
  13UI, Workflows & Features
  14
  15 * It was cumbersome to use "GIT_SSH" mechanism when the user wanted
  16   to pass an extra set of arguments to the underlying ssh.  A new
  17   environment variable GIT_SSH_COMMAND can be used for this.
  18
  19 * A request to store an empty note via "git notes" meant to remove
  20   note from the object but with --allow-empty we will store a
  21   (surprise!)  note that is empty.
  22
  23 * "git interpret-trailers" learned to properly handle the
  24   "Conflicts:" block at the end.
  25
  26 * "git am" learned "--message-id" option to copy the message ID of
  27   the incoming e-mail to the log message of resulting commit.
  28
  29 * "git send-email" learned "--transfer-encoding" option to force a
  30   non-fault Content-Transfer-Encoding header (e.g. base64).
  31
  32 * "git push" into a repository with a working tree normally refuses
  33   to modify the branch that is checked out.  The command learned to
  34   optionally do an equivalent of "git reset --hard" only when there
  35   is no change to the working tree and the index instead, which would
  36   be useful to "deploy" by pushing into a repository.
  37
  38 * "git new-workdir" (in contrib/) can be used to populate an empty
  39   and existing directory now.
  40
  41 * Credential helpers are asked in turn until one of them give
  42   positive response, which is cumbersome to turn off when you need to
  43   run Git in an automated setting.  The credential helper interface
  44   learned to allow a helper to say "stop, don't ask other helpers."
  45   Also GIT_TERMINAL_PROMPT environment can be set to false to disable
  46   our built-in prompt mechanism for passwords.
  47
  48 * "git branch -d" (delete) and "git branch -m" (move) learned to
  49   honor "-f" (force) flag; unlike many other subcommands, the way to
  50   force these have been with separate "-D/-M" options, which was
  51   inconsistent.
  52
  53 * "diff-highlight" filter (in contrib/) allows its color output to be
  54   customized via configuration variables.
  55
  56
  57Performance, Internal Implementation, Development Support etc.
  58
  59 * Some filesystems assign filemodes in a strange way, fooling then
  60   automatic "filemode trustability" check done during a new
  61   repository creation.  The initialization codepath has been hardened
  62   against this issue.
  63
  64 * The codepath in "git remote update --prune" to drop many refs has
  65   been optimized.
  66
  67 * Long overdue departure from the assumption that S_IFMT is shared by
  68   everybody made in 2005, which was necessary to port to z/OS.
  69
  70 * "git push" and "git fetch" did not communicate an overlong refname
  71   correctly.  Now it uses 64kB sideband to accommodate longer ones.
  72
  73 * Recent GPG changes the keyring format and drops support for RFC1991
  74   formatted signatures, breaking our existing tests.
  75
  76 * "git-prompt" (in contrib/) used a variable from the global scope,
  77   possibly contaminating end-user's namespace.
  78
  79
  80Also contains various documentation updates and code clean-ups.
  81
  82
  83Fixes since v2.2
  84----------------
  85
  86Unless otherwise noted, all the fixes since v2.2 in the maintenance
  87track are contained in this release (see the maintenance releases'
  88notes for details).
  89
  90 * Recent update to "git commit" broke amending an existing commit
  91   with bogus author/committer lines without a valid e-mail address.
  92   (merge c83a509 jk/commit-date-approxidate later to maint).
  93
  94 * Git did not correctly read an overlong refname from a packed refs
  95   file.
  96   (merge ea41783 jk/read-packed-refs-without-path-max later to maint).
  97
  98 * "git apply" was described in the documentation to take --ignore-date
  99   option, which it does not.
 100   (merge 0cef4e7 rw/apply-does-not-take-ignore-date later to maint).
 101
 102 * New tag object format validation added in 2.2 showed garbage after
 103   a tagname it reported in its error message.
 104   (merge a1e920a js/fsck-tag-validation later to maint).
 105
 106 * The code that reads the reflog from the newer to the older entries
 107   did not handle an entry that crosses a boundary of block it uses to
 108   read them correctly.
 109   (merge 69216bf jk/for-each-reflog-ent-reverse later to maint).
 110
 111 * "git ls-tree" does not support path selection based on negative
 112   pathspecs, but did not error out when negative pathspecs are given.
 113   (merge f1f6224 nd/ls-tree-pathspec later to maint).
 114
 115 * The function sometimes returned a non-freeable memory and some
 116   other times returned a piece of memory that must be freed, leading
 117   to inevitable leaks.
 118   (merge 59362e5 jc/exec-cmd-system-path-leak-fix later to maint).
 119
 120 * The code to abbreviate an object name to its short unique prefix
 121   has been optimized when no abbreviation was requested.
 122   (merge 61e704e mh/find-uniq-abbrev later to maint).
 123
 124 * "git add --ignore-errors ..." did not ignore an error to
 125   give a file that did not exist.
 126   (merge 1d31e5a mg/add-ignore-errors later to maint).
 127
 128 * "git checkout $treeish $path", when $path in the index and the
 129   working tree already matched what is in $treeish at the $path,
 130   still overwrote the $path unnecessarily.
 131   (merge c5326bd jk/checkout-from-tree later to maint).
 132
 133 * "git config --get-color" did not parse its command line arguments
 134   carefully.
 135   (merge cb35722 jk/colors-fix later to maint).
 136
 137 * open() emulated on Windows platforms did not give EISDIR upon
 138   an attempt to open a directory for writing.
 139   (merge ba6fad0 js/windows-open-eisdir-error later to maint).
 140
 141 * A few code paths used abs() when they should have used labs() on
 142   long integers.
 143   (merge 83915ba rs/maint-config-use-labs later to maint).
 144   (merge 31a8aa1 rs/receive-pack-use-labs later to maint).
 145
 146 * "gitweb" used to depend on a behaviour recent CGI.pm deprecated.
 147   (merge 13dbf46 jk/gitweb-with-newer-cgi-multi-param later to maint).
 148
 149 * "git init" (hence "git clone") initialized the per-repository
 150   configuration file .git/config with x-bit by mistake.
 151   (merge 1f32ecf mh/config-flip-xbit-back-after-checking later to maint).
 152
 153 * Git 2.0 was supposed to make the "simple" mode for the default of
 154   "git push", but it didn't.
 155   (merge 00a6fa0 jk/push-simple later to maint).
 156
 157 * "Everyday" document had a broken link.
 158   (merge 366c8d4 po/everyday-doc later to maint).
 159
 160 * A few test fixes.
 161   (merge 880ef58 jk/no-perl-tests later to maint).
 162
 163 * The build procedure did not bother fixing perl and python scripts
 164   when NO_PERL and NO_PYTHON build-time configuration changed.
 165   (merge ca2051d jk/rebuild-perl-scripts-with-no-perl-seting-change later to maint).