Documentation / RelNotes / 2.9.3.txton commit Merge branch 'rs/strbuf-add-real-path' (fc32293)
   1Git v2.9.3 Release Notes
   2========================
   3
   4Fixes since v2.9.2
   5------------------
   6
   7 * A helper function that takes the contents of a commit object and
   8   finds its subject line did not ignore leading blank lines, as is
   9   commonly done by other codepaths.  Make it ignore leading blank
  10   lines to match.
  11
  12 * Git does not know what the contents in the index should be for a
  13   path added with "git add -N" yet, so "git grep --cached" should not
  14   show hits (or show lack of hits, with -L) in such a path, but that
  15   logic does not apply to "git grep", i.e. searching in the working
  16   tree files.  But we did so by mistake, which has been corrected.
  17
  18 * "git rebase -i --autostash" did not restore the auto-stashed change
  19   when the operation was aborted.
  20
  21 * "git commit --amend --allow-empty-message -S" for a commit without
  22   any message body could have misidentified where the header of the
  23   commit object ends.
  24
  25 * More mark-up updates to typeset strings that are expected to
  26   literally typed by the end user in fixed-width font.
  27
  28 * For a long time, we carried an in-code comment that said our
  29   colored output would work only when we use fprintf/fputs on
  30   Windows, which no longer is the case for the past few years.
  31
  32 * "gc.autoPackLimit" when set to 1 should not trigger a repacking
  33   when there is only one pack, but the code counted poorly and did
  34   so.
  35
  36 * One part of "git am" had an oddball helper function that called
  37   stuff from outside "his" as opposed to calling what we have "ours",
  38   which was not gender-neutral and also inconsistent with the rest of
  39   the system where outside stuff is usuall called "theirs" in
  40   contrast to "ours".
  41
  42 * The test framework learned a new helper test_match_signal to
  43   check an exit code from getting killed by an expected signal.
  44
  45 * "git blame -M" missed a single line that was moved within the file.
  46
  47 * Fix recently introduced codepaths that are involved in parallel
  48   submodule operations, which gave up on reading too early, and
  49   could have wasted CPU while attempting to write under a corner
  50   case condition.
  51
  52 * "git grep -i" has been taught to fold case in non-ascii locales
  53   correctly.
  54
  55 * A test that unconditionally used "mktemp" learned that the command
  56   is not necessarily available everywhere.
  57
  58 * "git blame file" allowed the lineage of lines in the uncommitted,
  59   unadded contents of "file" to be inspected, but it refused when
  60   "file" did not appear in the current commit.  When "file" was
  61   created by renaming an existing file (but the change has not been
  62   committed), this restriction was unnecessarily tight.
  63
  64 * "git add -N dir/file && git write-tree" produced an incorrect tree
  65   when there are other paths in the same directory that sorts after
  66   "file".
  67
  68 * "git fetch http://user:pass@host/repo..." scrubbed the userinfo
  69   part, but "git push" didn't.
  70
  71 * An age old bug that caused "git diff --ignore-space-at-eol"
  72   misbehave has been fixed.
  73
  74 * "git notes merge" had a code to see if a path exists (and fails if
  75   it does) and then open the path for writing (when it doesn't).
  76   Replace it with open with O_EXCL.
  77
  78 * "git pack-objects" and "git index-pack" mostly operate with off_t
  79   when talking about the offset of objects in a packfile, but there
  80   were a handful of places that used "unsigned long" to hold that
  81   value, leading to an unintended truncation.
  82
  83 * Recent update to "git daemon" tries to enable the socket-level
  84   KEEPALIVE, but when it is spawned via inetd, the standard input
  85   file descriptor may not necessarily be connected to a socket.
  86   Suppress an ENOTSOCK error from setsockopt().
  87
  88 * Recent FreeBSD stopped making perl available at /usr/bin/perl;
  89   switch the default the built-in path to /usr/local/bin/perl on not
  90   too ancient FreeBSD releases.
  91
  92 * "git status" learned to suggest "merge --abort" during a conflicted
  93   merge, just like it already suggests "rebase --abort" during a
  94   conflicted rebase.
  95
  96 * The .c/.h sources are marked as such in our .gitattributes file so
  97   that "git diff -W" and friends would work better.
  98
  99 * Existing autoconf generated test for the need to link with pthread
 100   library did not check all the functions from pthread libraries;
 101   recent FreeBSD has some functions in libc but not others, and we
 102   mistakenly thought linking with libc is enough when it is not.
 103
 104 * Allow http daemon tests in Travis CI tests.
 105
 106 * Users of the parse_options_concat() API function need to allocate
 107   extra slots in advance and fill them with OPT_END() when they want
 108   to decide the set of supported options dynamically, which makes the
 109   code error-prone and hard to read.  This has been corrected by tweaking
 110   the API to allocate and return a new copy of "struct option" array.
 111
 112 * The use of strbuf in "git rm" to build filename to remove was a bit
 113   suboptimal, which has been fixed.
 114
 115 * "git commit --help" said "--no-verify" is only about skipping the
 116   pre-commit hook, and failed to say that it also skipped the
 117   commit-msg hook.
 118
 119 * "git merge" in Git v2.9 was taught to forbid merging an unrelated
 120   lines of history by default, but that is exactly the kind of thing
 121   the "--rejoin" mode of "git subtree" (in contrib/) wants to do.
 122   "git subtree" has been taught to use the "--allow-unrelated-histories"
 123   option to override the default.
 124
 125 * The build procedure for "git persistent-https" helper (in contrib/)
 126   has been updated so that it can be built with more recent versions
 127   of Go.
 128
 129 * There is an optimization used in "git diff $treeA $treeB" to borrow
 130   an already checked-out copy in the working tree when it is known to
 131   be the same as the blob being compared, expecting that open/mmap of
 132   such a file is faster than reading it from the object store, which
 133   involves inflating and applying delta.  This however kicked in even
 134   when the checked-out copy needs to go through the convert-to-git
 135   conversion (including the clean filter), which defeats the whole
 136   point of the optimization.  The optimization has been disabled when
 137   the conversion is necessary.
 138
 139 * "git -c grep.patternType=extended log --basic-regexp" misbehaved
 140   because the internal API to access the grep machinery was not
 141   designed well.
 142
 143 * Windows port was failing some tests in t4130, due to the lack of
 144   inum in the returned values by its lstat(2) emulation.
 145
 146 * The characters in the label shown for tags/refs for commits in
 147   "gitweb" output are now properly escaped for proper HTML output.
 148
 149 * FreeBSD can lie when asked mtime of a directory, which made the
 150   untracked cache code to fall back to a slow-path, which in turn
 151   caused tests in t7063 to fail because it wanted to verify the
 152   behaviour of the fast-path.
 153
 154 * Squelch compiler warnings for netmalloc (in compat/) library.
 155
 156 * The API documentation for hashmap was unclear if hashmap_entry
 157   can be safely discarded without any other consideration.  State
 158   that it is safe to do so.
 159
 160 * Not-so-recent rewrite of "git am" that started making internal
 161   calls into the commit machinery had an unintended regression, in
 162   that no matter how many seconds it took to apply many patches, the
 163   resulting committer timestamp for the resulting commits were all
 164   the same.
 165
 166 * "git difftool <paths>..." started in a subdirectory failed to
 167   interpret the paths relative to that directory, which has been
 168   fixed.
 169
 170Also contains minor documentation updates and code clean-ups.