Merge branch 'rs/bswap-ubsan-fix'
[git] / Documentation / RelNotes / 2.9.3.txt
1 Git v2.9.3 Release Notes
2 ========================
3
4 Fixes 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
170 Also contains minor documentation updates and code clean-ups.