| 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. |