1Git 2.17 Release Notes 2====================== 3 4Updates since v2.16 5------------------- 6 7UI, Workflows & Features 8 9 * "diff" family of commands learned "--find-object=<object-id>" option 10 to limit the findings to changes that involve the named object. 11 (merge 4d8c51aa19 sb/diff-blobfind-pickaxe later to maint). 12 13 * "git format-patch" learned to give 72-cols to diffstat, which is 14 consistent with other line length limits the subcommand uses for 15 its output meant for e-mails. 16 17 * The log from "git daemon" can be redirected with a new option; one 18 relevant use case is to send the log to standard error (instead of 19 syslog) when running it from inetd. 20 21 * "git rebase" learned to take "--allow-empty-message" option. 22 23Performance, Internal Implementation, Development Support etc. 24 25 * More perf tests for threaded grep 26 27 * "perf" test output can be sent to codespeed server. 28 (merge 19cf57a92e cc/codespeed later to maint). 29 30 * The build procedure for perl/ part has been greatly simplified by 31 weaning ourselves off of MakeMaker. 32 33 * In preparation for implementing narrow/partial clone, the machinery 34 for checking object connectivity used by gc and fsck has been 35 taught that a missing object is OK when it is referenced by a 36 packfile specially marked as coming from trusted repository that 37 promises to make them available on-demand and lazily. 38 39 * The machinery to clone & fetch, which in turn involves packing and 40 unpacking objects, has been told how to omit certain objects using 41 the filtering mechanism introduced by another topic. It now knows 42 to mark the resulting pack as a promisor pack to tolerate missing 43 objects, laying foundation for "narrow" clones. 44 45 * The first step to getting rid of mru API and using the 46 doubly-linked list API directly instead. 47 48 * Retire mru API as it does not give enough abstraction over 49 underlying list API to be worth it. 50 51 * Rewrite two more "git submodule" subcommands in C. 52 53 * The tracing machinery learned to report tweaking of environment 54 variables as well. 55 (merge 090a09272a nd/trace-with-env later to maint). 56 57 * Update Coccinelle rules to catch and optimize strbuf_addf(&buf, "%s", str) 58 (merge cd9a4b6d93 rs/strbuf-cocci-workaround later to maint). 59 60 * Prevent "clang-format" from breaking line after function return type. 61 (merge a3715d43e8 po/clang-format-functype-weight later to maint). 62 63 * The sequencer infrastructure is shared across "git cherry-pick", 64 "git rebase -i", etc., and has always spawned "git commit" when it 65 needs to create a commit. It has been taught to do so internally, 66 when able, by reusing the codepath "git commit" itself uses, which 67 gives performance boost for a few tens of percents in some sample 68 scenarios. 69 70 * Push the submodule version of collision-detecting SHA-1 hash 71 implementation a bit harder on builders. 72 73 * Avoid mmapping small files while using packed refs (especially ones 74 with zero size, which would cause later munmap() to fail). 75 (merge ba41a8b600 kg/packed-ref-cache-fix later to maint). 76 77 * Conversion from uchar[20] to struct object_id continues. 78 79 * More tests for wildmatch functions. 80 81 * The code to binary search starting from a fan-out table (which is 82 how the packfile is indexed with object names) has been refactored 83 into a reusable helper. 84 85Also contains various documentation updates and code clean-ups. 86 87 88Fixes since v2.16 89----------------- 90 91 * An old regression in "git describe --all $annotated_tag^0" has been 92 fixed. 93 94 * "git status" after moving a path in the working tree (hence making 95 it appear "removed") and then adding with the -N option (hence 96 making that appear "added") detected it as a rename, but did not 97 report the old and new pathnames correctly. 98 (merge 176ea74793 nd/ita-wt-renames-in-status later to maint). 99 100 * "git svn dcommit" did not take into account the fact that a 101 svn+ssh:// URL with a username@ (typically used for pushing) refers 102 to the same SVN repository without the username@ and failed when 103 svn.pushmergeinfo option is set. 104 105 * API clean-up around revision traversal. 106 107 * "git merge -Xours/-Xtheirs" learned to use our/their version when 108 resolving a conflicting updates to a symbolic link. 109 110 * "git clone $there $here" is allowed even when here directory exists 111 as long as it is an empty directory, but the command incorrectly 112 removed it upon a failure of the operation. 113 114 * "git commit --fixup" did not allow "-m<message>" option to be used 115 at the same time; allow it to annotate resulting commit with more 116 text. 117 (merge 30884c9afc ab/commit-m-with-fixup later to maint). 118 119 * When resetting the working tree files recursively, the working tree 120 of submodules are now also reset to match. 121 (merge 7dcc1f4df8 sb/submodule-update-reset-fix later to maint). 122 123 * "git stash -- <pathspec>" incorrectly blew away untracked files in 124 the directory that matched the pathspec, which has been corrected. 125 126 * Instead of maintaining home-grown email address parsing code, ship 127 a copy of reasonably recent Mail::Address to be used as a fallback 128 in 'git send-email' when the platform lacks it. 129 (merge d60be8acab mm/send-email-fallback-to-local-mail-address later to maint). 130 131 * "git add -p" was taught to ignore local changes to submodules as 132 they do not interfere with the partial addition of regular changes 133 anyway. 134 135 * Avoid showing a warning message in the middle of a line of "git 136 diff" output. 137 (merge 4e056c989f nd/diff-flush-before-warning later to maint). 138 139 * The http tracing code, often used to debug connection issues, 140 learned to redact potentially sensitive information from its output 141 so that it can be more safely sharable. 142 (merge 8ba18e6fa4 jt/http-redact-cookies later to maint). 143 144 * Crash fix for a corner case where an error codepath tried to unlock 145 what it did not acquire lock on. 146 (merge 81fcb698e0 mr/packed-ref-store-fix later to maint). 147 148 * The split-index mode had a few corner case bugs fixed. 149 (merge ae59a4e44f tg/split-index-fixes later to maint). 150 151 * Assorted fixes to "git daemon". 152 (merge ed15e58efe jk/daemon-fixes later to maint). 153 154 * Completion of "git merge -s<strategy>" (in contrib/) did not work 155 well in non-C locale. 156 (merge 7cc763aaa3 nd/list-merge-strategy later to maint). 157 158 * Workaround for segfault with more recent versions of SVN. 159 (merge 7f6f75e97a ew/svn-branch-segfault-fix later to maint). 160 161 * Plug recently introduced leaks in fsck. 162 (merge ba3a08ca0e jt/fsck-code-cleanup later to maint). 163 164 * "git pull --rebase" did not pass verbosity setting down when 165 recursing into a submodule. 166 (merge a56771a668 sb/pull-rebase-submodule later to maint). 167 168 * The way "git reset --hard" reports the commit the updated HEAD 169 points at is made consistent with the way how the commit title is 170 generated by the other parts of the system. This matters when the 171 title is spread across physically multiple lines. 172 (merge 1cf823fb68 tg/reset-hard-show-head-with-pretty later to maint). 173 174 * Test fixes. 175 (merge 63b1a175ee sg/test-i18ngrep later to maint). 176 177 * Some bugs around "untracked cache" feature have been fixed. This 178 will notice corrupt data in the untracked cache left by old and 179 buggy code and issue a warning---the index can be fixed by clearing 180 the untracked cache from it. 181 (merge 0cacebf099 nd/fix-untracked-cache-invalidation later to maint). 182 (merge 7bf0be7501 ab/untracked-cache-invalidation-docs later to maint). 183 184 * "git blame HEAD COPYING" in a bare repository failed to run, while 185 "git blame HEAD -- COPYING" run just fine. This has been corrected. 186 187 * "git add" files in the same directory, but spelling the directory 188 path in different cases on case insensitive filesystem, corrupted 189 the name hash data structure and led to unexpected results. This 190 has been corrected. 191 (merge c95525e90d bp/name-hash-dirname-fix later to maint). 192 193 * "git rebase -p" mangled log messages of a merge commit, which is 194 now fixed. 195 (merge ed5144d7eb js/fix-merge-arg-quoting-in-rebase-p later to maint). 196 197 * Some low level protocol codepath could crash when they get an 198 unexpected flush packet, which is now fixed. 199 (merge bb1356dc64 js/packet-read-line-check-null later to maint). 200 201 * "git check-ignore" with multiple paths got confused when one is a 202 file and the other is a directory, which has been fixed. 203 (merge d60771e930 rs/check-ignore-multi later to maint). 204 205 * "git describe $garbage" stopped giving any errors when the garbage 206 happens to be a string with 40 hexadecimal letters. 207 (merge a8e7a2bf0f sb/describe-blob later to maint). 208 209 * Code to unquote single-quoted string (used in the parser for 210 configuration files, etc.) did not diagnose bogus input correctly 211 and produced bogus results instead. 212 (merge ddbbf8eb25 jk/sq-dequote-on-bogus-input later to maint). 213 214 * Other minor doc, test and build updates and code cleanups. 215 (merge e2a5a028c7 bw/oidmap-autoinit later to maint). 216 (merge f0a6068a9f ys/bisect-object-id-missing-conversion-fix later to maint). 217 (merge ec3b4b06f8 cl/t9001-cleanup later to maint). 218 (merge e1b3f3dd38 ks/submodule-doc-updates later to maint). 219 (merge fbac558a9b rs/describe-unique-abbrev later to maint). 220 (merge 8462ff43e4 tb/crlf-conv-flags later to maint). 221 (merge 7d68bb0766 rb/hashmap-h-compilation-fix later to maint). 222 (merge 3449847168 cc/sha1-file-name later to maint). 223 (merge ad622a256f ds/use-get-be64 later to maint). 224 (merge f919ffebed sg/cocci-move-array later to maint). 225 (merge 4e801463c7 jc/mailinfo-cleanup-fix later to maint). 226 (merge ef5b3a6c5e nd/shared-index-fix later to maint). 227 (merge 9f5258cbb8 tz/doc-show-defaults-to-head later to maint). 228 (merge b780e4407d jc/worktree-add-short-help later to maint). 229 (merge ae239fc8e5 rs/cocci-strbuf-addf-to-addstr later to maint). 230 (merge 2e22a85e5c nd/ignore-glob-doc-update later to maint). 231 (merge 3738031581 jk/gettext-poison later to maint). 232 (merge 54360a1956 rj/sparse-updates later to maint). 233 (merge 12e31a6b12 sg/doc-test-must-fail-args later to maint). 234 (merge 760f1ad101 bc/doc-interpret-trailers-grammofix later to maint). 235 (merge 4ccf461f56 bp/fsmonitor later to maint). 236 (merge a6119f82b1 jk/test-hashmap-updates later to maint). 237 (merge 5aea9fe6cc rd/typofix later to maint).