Merge branch 'jk/rebase-i-exec-gitdir-fix'
[git] / Documentation / RelNotes / 2.10.1.txt
1 Git v2.10.1 Release Notes
2 =========================
3
4 Fixes since v2.10
5 -----------------
6
7  * Clarify various ways to specify the "revision ranges" in the
8    documentation.
9
10  * "diff-highlight" script (in contrib/) learned to work better with
11    "git log -p --graph" output.
12
13  * The test framework left the number of tests and success/failure
14    count in the t/test-results directory, keyed by the name of the
15    test script plus the process ID.  The latter however turned out not
16    to serve any useful purpose.  The process ID part of the filename
17    has been removed.
18
19  * Having a submodule whose ".git" repository is somehow corrupt
20    caused a few commands that recurse into submodules loop forever.
21
22  * "git symbolic-ref -d HEAD" happily removes the symbolic ref, but
23    the resulting repository becomes an invalid one.  Teach the command
24    to forbid removal of HEAD.
25
26  * A test spawned a short-lived background process, which sometimes
27    prevented the test directory from getting removed at the end of the
28    script on some platforms.
29
30  * Update a few tests that used to use GIT_CURL_VERBOSE to use the
31    newer GIT_TRACE_CURL.
32
33  * Update Japanese translation for "git-gui".
34
35  * "git fetch http::/site/path" did not die correctly and segfaulted
36    instead.
37
38  * "git commit-tree" stopped reading commit.gpgsign configuration
39    variable that was meant for Porcelain "git commit" in Git 2.9; we
40    forgot to update "git gui" to look at the configuration to match
41    this change.
42
43  * "git log --cherry-pick" used to include merge commits as candidates
44    to be matched up with other commits, resulting a lot of wasted time.
45    The patch-id generation logic has been updated to ignore merges to
46    avoid the wastage.
47
48  * The http transport (with curl-multi option, which is the default
49    these days) failed to remove curl-easy handle from a curlm session,
50    which led to unnecessary API failures.
51
52  * "git diff -W" output needs to extend the context backward to
53    include the header line of the current function and also forward to
54    include the body of the entire current function up to the header
55    line of the next one.  This process may have to merge to adjacent
56    hunks, but the code forgot to do so in some cases.
57
58  * Performance tests done via "t/perf" did not use the same set of
59    build configuration if the user relied on autoconf generated
60    configuration.
61
62  * "git format-patch --base=..." feature that was recently added
63    showed the base commit information after "-- " e-mail signature
64    line, which turned out to be inconvenient.  The base information
65    has been moved above the signature line.
66
67  * Even when "git pull --rebase=preserve" (and the underlying "git
68    rebase --preserve") can complete without creating any new commit
69    (i.e. fast-forwards), it still insisted on having a usable ident
70    information (read: user.email is set correctly), which was less
71    than nice.  As the underlying commands used inside "git rebase"
72    would fail with a more meaningful error message and advice text
73    when the bogus ident matters, this extra check was removed.
74
75  * "git gc --aggressive" used to limit the delta-chain length to 250,
76    which is way too deep for gaining additional space savings and is
77    detrimental for runtime performance.  The limit has been reduced to
78    50.
79
80  * Documentation for individual configuration variables to control use
81    of color (like `color.grep`) said that their default value is
82    'false', instead of saying their default is taken from `color.ui`.
83    When we updated the default value for color.ui from 'false' to
84    'auto' quite a while ago, all of them broke.  This has been
85    corrected.
86
87  * A shell script example in check-ref-format documentation has been
88    fixed.
89
90  * "git checkout <word>" does not follow the usual disambiguation
91    rules when the <word> can be both a rev and a path, to allow
92    checking out a branch 'foo' in a project that happens to have a
93    file 'foo' in the working tree without having to disambiguate.
94    This was poorly documented and the check was incorrect when the
95    command was run from a subdirectory.
96
97  * Some codepaths in "git diff" used regexec(3) on a buffer that was
98    mmap(2)ed, which may not have a terminating NUL, leading to a read
99    beyond the end of the mapped region.  This was fixed by introducing
100    a regexec_buf() helper that takes a <ptr,len> pair with REG_STARTEND
101    extension.
102
103  * The procedure to build Git on Mac OS X for Travis CI hardcoded the
104    internal directory structure we assumed HomeBrew uses, which was a
105    no-no.  The procedure has been updated to ask HomeBrew things we
106    need to know to fix this.
107
108  * When "git rebase -i" is given a broken instruction, it told the
109    user to fix it with "--edit-todo", but didn't say what the step
110    after that was (i.e. "--continue").
111
112  * "git add --chmod=+x" added recently lacked documentation, which has
113    been corrected.
114
115  * "git add --chmod=+x <pathspec>" added recently only toggled the
116    executable bit for paths that are either new or modified. This has
117    been corrected to flip the executable bit for all paths that match
118    the given pathspec.
119
120  * "git pack-objects --include-tag" was taught that when we know that
121    we are sending an object C, we want a tag B that directly points at
122    C but also a tag A that points at the tag B.  We used to miss the
123    intermediate tag B in some cases.
124
125  * Documentation around tools to import from CVS was fairly outdated.
126
127  * In the codepath that comes up with the hostname to be used in an
128    e-mail when the user didn't tell us, we looked at ai_canonname
129    field in struct addrinfo without making sure it is not NULL first.
130
131 Also contains minor documentation updates and code clean-ups.