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