]>
Commit | Line | Data |
---|---|---|
0bf8c8ce JH |
1 | Git 2.19 Release Notes |
2 | ====================== | |
3 | ||
4 | Updates since v2.18 | |
5 | ------------------- | |
6 | ||
7 | UI, Workflows & Features | |
8 | ||
ed843436 JH |
9 | * "git diff" compares the index and the working tree. For paths |
10 | added with intent-to-add bit, the command shows the full contents | |
11 | of them as added, but the paths themselves were not marked as new | |
12 | files. They are now shown as new by default. | |
13 | ||
14 | "git apply" learned the "--intent-to-add" option so that an | |
15 | otherwise working-tree-only application of a patch will add new | |
16 | paths to the index marked with the "intent-to-add" bit. | |
17 | ||
b7bd9486 JH |
18 | * "git grep" learned the "--column" option that gives not just the |
19 | line number but the column number of the hit. | |
20 | ||
21 | * The "-l" option in "git branch -l" is an unfortunate short-hand for | |
22 | "--create-reflog", but many users, both old and new, somehow expect | |
23 | it to be something else, perhaps "--list". This step warns when "-l" | |
24 | is used as a short-hand for "--create-reflog" and warns about the | |
25 | future repurposing of the it when it is used. | |
26 | ||
ffc6fa0e JH |
27 | * The userdiff pattern for .php has been updated. |
28 | ||
29 | * The content-transfer-encoding of the message "git send-email" sends | |
30 | out by default was 8bit, which can cause trouble when there is an | |
31 | overlong line to bust RFC 5322/2822 limit. A new option 'auto' to | |
32 | automatically switch to quoted-printable when there is such a line | |
33 | in the payload has been introduced and is made the default. | |
34 | ||
1d89318c JH |
35 | * "git checkout" and "git worktree add" learned to honor |
36 | checkout.defaultRemote when auto-vivifying a local branch out of a | |
37 | remote tracking branch in a repository with multiple remotes that | |
38 | have tracking branches that share the same names. | |
39 | (merge 8d7b558bae ab/checkout-default-remote later to maint). | |
40 | ||
41 | * "git grep" learned the "--only-matching" option. | |
42 | ||
43 | * "git rebase --rebase-merges" mode now handles octopus merges as | |
44 | well. | |
45 | ||
46 | * Add a server-side knob to skip commits in exponential/fibbonacci | |
47 | stride in an attempt to cover wider swath of history with a smaller | |
48 | number of iterations, potentially accepting a larger packfile | |
49 | transfer, instead of going back one commit a time during common | |
50 | ancestor discovery during the "git fetch" transaction. | |
51 | (merge 42cc7485a2 jt/fetch-negotiator-skipping later to maint). | |
52 | ||
63749b2d JH |
53 | * A new configuration variable core.usereplacerefs has been added, |
54 | primarily to help server installations that want to ignore the | |
55 | replace mechanism altogether. | |
56 | ||
57 | * Teach "git tag -s" etc. a few configuration variables (gpg.format | |
58 | that can be set to "openpgp" or "x509", and gpg.<format>.program | |
59 | that is used to specify what program to use to deal with the format) | |
60 | to allow x.509 certs with CMS via "gpgsm" to be used instead of | |
61 | openpgp via "gnupg". | |
62 | ||
63 | * Many more strings are prepared for l10n. | |
64 | ||
65 | * "git p4 submit" learns to ask its own pre-submit hook if it should | |
66 | continue with submitting. | |
67 | ||
fa03cdc3 JH |
68 | * The test performed at the receiving end of "git push" to prevent |
69 | bad objects from entering repository can be customized via | |
70 | receive.fsck.* configuration variables; we now have gained a | |
71 | counterpart to do the same on the "git fetch" side, with | |
72 | fetch.fsck.* configuration variables. | |
73 | ||
74 | * "git pull --rebase=interactive" learned "i" as a short-hand for | |
75 | "interactive". | |
0bf8c8ce | 76 | |
7e8bfb04 JH |
77 | * "git instaweb" has been adjusted to run better with newer Apache on |
78 | RedHat based distros. | |
79 | ||
80 | * "git range-diff" is a reimplementation of "git tbdiff" that lets us | |
81 | compare individual patches in two iterations of a topic. | |
82 | ||
83 | * The sideband code learned to optionally paint selected keywords at | |
84 | the beginning of incoming lines on the receiving end. | |
85 | ||
b9dfa238 JH |
86 | * "git branch --list" learned to take the default sort order from the |
87 | 'branch.sort' configuration variable, just like "git tag --list" | |
88 | pays attention to 'tag.sort'. | |
89 | ||
90 | * "git worktree" command learned "--quiet" option to make it less | |
91 | verbose. | |
92 | ||
7e8bfb04 | 93 | |
0bf8c8ce JH |
94 | Performance, Internal Implementation, Development Support etc. |
95 | ||
ed843436 JH |
96 | * The bulk of "git submodule foreach" has been rewritten in C. |
97 | ||
98 | * The in-core "commit" object had an all-purpose "void *util" field, | |
99 | which was tricky to use especially in library-ish part of the | |
100 | code. All of the existing uses of the field has been migrated to a | |
101 | more dedicated "commit-slab" mechanism and the field is eliminated. | |
102 | ||
103 | * A less often used command "git show-index" has been modernized. | |
104 | (merge fb3010c31f jk/show-index later to maint). | |
105 | ||
106 | * The conversion to pass "the_repository" and then "a_repository" | |
107 | throughout the object access API continues. | |
108 | ||
109 | * Continuing with the idea to programatically enumerate various | |
110 | pieces of data required for command line completion, teach the | |
111 | codebase to report the list of configuration variables | |
112 | subcommands care about to help complete them. | |
113 | ||
114 | * Separate "rebase -p" codepath out of "rebase -i" implementation to | |
115 | slim down the latter and make it easier to manage. | |
116 | ||
e3331758 JH |
117 | * Make refspec parsing codepath more robust. |
118 | ||
119 | * Some flaky tests have been fixed. | |
120 | ||
121 | * Continuing with the idea to programmatically enumerate various | |
122 | pieces of data required for command line completion, the codebase | |
123 | has been taught to enumerate options prefixed with "--no-" to | |
124 | negate them. | |
125 | ||
126 | * Build and test procedure for netrc credential helper (in contrib/) | |
127 | has been updated. | |
128 | ||
b7bd9486 JH |
129 | * Remove unused function definitions and declarations from ewah |
130 | bitmap subsystem. | |
131 | ||
132 | * Code preparation to make "git p4" closer to be usable with Python 3. | |
133 | ||
134 | * Tighten the API to make it harder to misuse in-tree .gitmodules | |
135 | file, even though it shares the same syntax with configuration | |
136 | files, to read random configuration items from it. | |
137 | ||
ffc6fa0e JH |
138 | * "git fast-import" has been updated to avoid attempting to create |
139 | delta against a zero-byte-long string, which is pointless. | |
140 | ||
141 | * The codebase has been updated to compile cleanly with -pedantic | |
142 | option. | |
143 | (merge 2b647a05d7 bb/pedantic later to maint). | |
144 | ||
145 | * The character display width table has been updated to match the | |
146 | latest Unicode standard. | |
147 | (merge 570951eea2 bb/unicode-11-width later to maint). | |
148 | ||
149 | * test-lint now looks for broken use of "VAR=VAL shell_func" in test | |
150 | scripts. | |
151 | ||
1d89318c JH |
152 | * Conversion from uchar[40] to struct object_id continues. |
153 | ||
154 | * Recent "security fix" to pay attention to contents of ".gitmodules" | |
155 | while accepting "git push" was a bit overly strict than necessary, | |
156 | which has been adjusted. | |
157 | ||
158 | * "git fsck" learns to make sure the optional commit-graph file is in | |
159 | a sane state. | |
160 | ||
161 | * "git diff --color-moved" feature has further been tweaked. | |
162 | ||
163 | * Code restructuring and a small fix to transport protocol v2 during | |
164 | fetching. | |
165 | ||
166 | * Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log" | |
167 | take has been tweaked. | |
168 | ||
169 | * lookup_commit_reference() and friends have been updated to find | |
170 | in-core object for a specific in-core repository instance. | |
171 | ||
172 | * Various glitches in the heuristics of merge-recursive strategy have | |
173 | been documented in new tests. | |
174 | ||
175 | * "git fetch" learned a new option "--negotiation-tip" to limit the | |
176 | set of commits it tells the other end as "have", to reduce wasted | |
177 | bandwidth and cycles, which would be helpful when the receiving | |
178 | repository has a lot of refs that have little to do with the | |
179 | history at the remote it is fetching from. | |
180 | ||
181 | * For a large tree, the index needs to hold many cache entries | |
182 | allocated on heap. These cache entries are now allocated out of a | |
183 | dedicated memory pool to amortize malloc(3) overhead. | |
184 | ||
185 | * Tests to cover various conflicting cases have been added for | |
186 | merge-recursive. | |
187 | ||
188 | * Tests to cover conflict cases that involve submodules have been | |
189 | added for merge-recursive. | |
190 | ||
191 | * Look for broken "&&" chains that are hidden in subshell, many of | |
192 | which have been found and corrected. | |
193 | ||
194 | * The singleton commit-graph in-core instance is made per in-core | |
195 | repository instance. | |
196 | ||
63749b2d JH |
197 | * "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile |
198 | with -pedantic option, which may catch more problematic program | |
199 | constructs and potential bugs. | |
200 | ||
201 | * Preparatory code to later add json output for telemetry data has | |
202 | been added. | |
203 | ||
204 | * Update the way we use Coccinelle to find out-of-style code that | |
205 | need to be modernised. | |
206 | ||
207 | * It is too easy to misuse system API functions such as strcat(); | |
208 | these selected functions are now forbidden in this codebase and | |
209 | will cause a compilation failure. | |
210 | ||
211 | * Add a script (in contrib/) to help users of VSCode work better with | |
212 | our codebase. | |
213 | ||
214 | * The Travis CI scripts were taught to ship back the test data from | |
215 | failed tests. | |
216 | (merge aea8879a6a sg/travis-retrieve-trash-upon-failure later to maint). | |
217 | ||
fa03cdc3 JH |
218 | * The parse-options machinery learned to refrain from enclosing |
219 | placeholder string inside a "<bra" and "ket>" pair automatically | |
220 | without PARSE_OPT_LITERAL_ARGHELP. Existing help text for option | |
221 | arguments that are not formatted correctly have been identified and | |
222 | fixed. | |
223 | (merge 5f0df44cd7 rs/parse-opt-lithelp later to maint). | |
224 | ||
225 | * Noiseword "extern" has been removed from function decls in the | |
226 | header files. | |
227 | ||
228 | * A few atoms like %(objecttype) and %(objectsize) in the format | |
229 | specifier of "for-each-ref --format=<format>" can be filled without | |
230 | getting the full contents of the object, but just with the object | |
231 | header. These cases have been optimized by calling | |
232 | oid_object_info() API (instead of reading and inspecting the data). | |
233 | ||
234 | * The end result of documentation update has been made to be | |
235 | inspected more easily to help developers. | |
236 | ||
7e8bfb04 JH |
237 | * The API to iterate over all objects learned to optionally list |
238 | objects in the order they appear in packfiles, which helps locality | |
239 | of access if the caller accesses these objects while as objects are | |
240 | enumerated. | |
241 | ||
242 | * Improve built-in facility to catch broken &&-chain in the tests. | |
243 | ||
244 | * The more library-ish parts of the codebase learned to work on the | |
245 | in-core index-state instance that is passed in by their callers, | |
246 | instead of always working on the singleton "the_index" instance. | |
247 | ||
248 | * A test prerequisite defined by various test scripts with slightly | |
249 | different semantics has been consolidated into a single copy and | |
250 | made into a lazily defined one. | |
251 | (merge 6ec633059a wc/make-funnynames-shared-lazy-prereq later to maint). | |
252 | ||
253 | * After a partial clone, repeated fetches from promisor remote would | |
254 | have accumulated many packfiles marked with .promisor bit without | |
255 | getting them coalesced into fewer packfiles, hurting performance. | |
256 | "git repack" now learned to repack them. | |
257 | ||
b9dfa238 JH |
258 | * Partially revert the support for multiple hash functions to regain |
259 | hash comparison performance; we'd think of a way to do this better | |
260 | in the next cycle. | |
261 | ||
262 | * "git help --config" (which is used in command line completion) | |
263 | missed the configuration variables not described in the main | |
264 | config.txt file but are described in another file that is included | |
265 | by it, which has been corrected. | |
0bf8c8ce | 266 | |
c05048d4 JH |
267 | * The test linter code has learned that the end of here-doc mark |
268 | "EOF" can be quoted in a double-quote pair, not just in a | |
269 | single-quote pair. | |
270 | ||
271 | ||
0bf8c8ce JH |
272 | Fixes since v2.18 |
273 | ----------------- | |
ed843436 JH |
274 | |
275 | * "git remote update" can take both a single remote nickname and a | |
276 | nickname for remote groups, and the completion script (in contrib/) | |
277 | has been taught about it. | |
278 | (merge 9cd4382ad5 ls/complete-remote-update-names later to maint). | |
279 | ||
280 | * "git fetch --shallow-since=<cutoff>" that specifies the cut-off | |
281 | point that is newer than the existing history used to end up | |
282 | grabbing the entire history. Such a request now errors out. | |
283 | (merge e34de73c56 nd/reject-empty-shallow-request later to maint). | |
284 | ||
e3331758 JH |
285 | * Fix for 2.17-era regression around `core.safecrlf`. |
286 | (merge 6cb09125be as/safecrlf-quiet-fix later to maint). | |
287 | ||
288 | * The recent addition of "partial clone" experimental feature kicked | |
289 | in when it shouldn't, namely, when there is no partial-clone filter | |
290 | defined even if extensions.partialclone is set. | |
291 | (merge cac1137dc4 jh/partial-clone later to maint). | |
292 | ||
293 | * "git send-pack --signed" (hence "git push --signed" over the http | |
294 | transport) did not read user ident from the config mechanism to | |
295 | determine whom to sign the push certificate as, which has been | |
296 | corrected. | |
297 | (merge d067d98887 ms/send-pack-honor-config later to maint). | |
298 | ||
299 | * "git fetch-pack --all" used to unnecessarily fail upon seeing an | |
300 | annotated tag that points at an object other than a commit. | |
301 | (merge c12c9df527 jk/fetch-all-peeled-fix later to maint). | |
302 | ||
303 | * When user edits the patch in "git add -p" and the user's editor is | |
304 | set to strip trailing whitespaces indiscriminately, an empty line | |
305 | that is unchanged in the patch would become completely empty | |
306 | (instead of a line with a sole SP on it). The code introduced in | |
307 | Git 2.17 timeframe failed to parse such a patch, but now it learned | |
308 | to notice the situation and cope with it. | |
309 | (merge f4d35a6b49 pw/add-p-recount later to maint). | |
310 | ||
311 | * The code to try seeing if a fetch is necessary in a submodule | |
312 | during a fetch with --recurse-submodules got confused when the path | |
313 | to the submodule was changed in the range of commits in the | |
314 | superproject, sometimes showing "(null)". This has been corrected. | |
315 | ||
b7bd9486 JH |
316 | * Bugfix for "rebase -i" corner case regression. |
317 | (merge a9279c6785 pw/rebase-i-keep-reword-after-conflict later to maint). | |
318 | ||
319 | * Recently added "--base" option to "git format-patch" command did | |
320 | not correctly generate prereq patch ids. | |
321 | (merge 15b76c1fb3 xy/format-patch-prereq-patch-id-fix later to maint). | |
322 | ||
323 | * POSIX portability fix in Makefile to fix a glitch introduced a few | |
324 | releases ago. | |
325 | (merge 6600054e9b dj/runtime-prefix later to maint). | |
326 | ||
327 | * "git filter-branch" when used with the "--state-branch" option | |
328 | still attempted to rewrite the commits whose filtered result is | |
329 | known from the previous attempt (which is recorded on the state | |
330 | branch); the command has been corrected not to waste cycles doing | |
331 | so. | |
332 | (merge 709cfe848a mb/filter-branch-optim later to maint). | |
333 | ||
334 | * Clarify that setting core.ignoreCase to deviate from reality would | |
335 | not turn a case-incapable filesystem into a case-capable one. | |
336 | (merge 48294b512a ms/core-icase-doc later to maint). | |
337 | ||
ffc6fa0e JH |
338 | * "fsck.skipList" did not prevent a blob object listed there from |
339 | being inspected for is contents (e.g. we recently started to | |
340 | inspect the contents of ".gitmodules" for certain malicious | |
341 | patterns), which has been corrected. | |
342 | (merge fb16287719 rj/submodule-fsck-skip later to maint). | |
343 | ||
344 | * "git checkout --recurse-submodules another-branch" did not report | |
345 | in which submodule it failed to update the working tree, which | |
346 | resulted in an unhelpful error message. | |
347 | (merge ba95d4e4bd sb/submodule-move-head-error-msg later to maint). | |
348 | ||
349 | * "git rebase" behaved slightly differently depending on which one of | |
350 | the three backends gets used; this has been documented and an | |
351 | effort to make them more uniform has begun. | |
352 | (merge b00bf1c9a8 en/rebase-consistency later to maint). | |
353 | ||
354 | * The "--ignore-case" option of "git for-each-ref" (and its friends) | |
355 | did not work correctly, which has been fixed. | |
356 | (merge e674eb2528 jk/for-each-ref-icase later to maint). | |
357 | ||
358 | * "git fetch" failed to correctly validate the set of objects it | |
359 | received when making a shallow history deeper, which has been | |
360 | corrected. | |
361 | (merge cf1e7c0770 jt/connectivity-check-after-unshallow later to maint). | |
362 | ||
363 | * Partial clone support of "git clone" has been updated to correctly | |
364 | validate the objects it receives from the other side. The server | |
365 | side has been corrected to send objects that are directly | |
366 | requested, even if they may match the filtering criteria (e.g. when | |
367 | doing a "lazy blob" partial clone). | |
368 | (merge a7e67c11b8 jt/partial-clone-fsck-connectivity later to maint). | |
369 | ||
370 | * Handling of an empty range by "git cherry-pick" was inconsistent | |
371 | depending on how the range ended up to be empty, which has been | |
372 | corrected. | |
373 | (merge c5e358d073 jk/empty-pick-fix later to maint). | |
374 | ||
375 | * "git reset --merge" (hence "git merge ---abort") and "git reset --hard" | |
376 | had trouble working correctly in a sparsely checked out working | |
377 | tree after a conflict, which has been corrected. | |
378 | (merge b33fdfc34c mk/merge-in-sparse-checkout later to maint). | |
379 | ||
380 | * Correct a broken use of "VAR=VAL shell_func" in a test. | |
381 | (merge 650161a277 jc/t3404-one-shot-export-fix later to maint). | |
382 | ||
383 | * "git rev-parse ':/substring'" did not consider the history leading | |
384 | only to HEAD when looking for a commit with the given substring, | |
385 | when the HEAD is detached. This has been fixed. | |
386 | (merge 6b3351e799 wc/find-commit-with-pattern-on-detached-head later to maint). | |
387 | ||
388 | * Build doc update for Windows. | |
389 | (merge ede8d89bb1 nd/command-list later to maint). | |
390 | ||
391 | * core.commentchar is now honored when preparing the list of commits | |
392 | to replay in "rebase -i". | |
393 | ||
1d89318c JH |
394 | * "git pull --rebase" on a corrupt HEAD caused a segfault. In |
395 | general we substitute an empty tree object when running the in-core | |
396 | equivalent of the diff-index command, and the codepath has been | |
397 | corrected to do so as well to fix this issue. | |
398 | (merge 3506dc9445 jk/has-uncommitted-changes-fix later to maint). | |
399 | ||
400 | * httpd tests saw occasional breakage due to the way its access log | |
401 | gets inspected by the tests, which has been updated to make them | |
402 | less flaky. | |
403 | (merge e8b3b2e275 sg/httpd-test-unflake later to maint). | |
404 | ||
405 | * Tests to cover more D/F conflict cases have been added for | |
406 | merge-recursive. | |
407 | ||
408 | * "git gc --auto" opens file descriptors for the packfiles before | |
409 | spawning "git repack/prune", which would upset Windows that does | |
410 | not want a process to work on a file that is open by another | |
411 | process. The issue has been worked around. | |
412 | (merge 12e73a3ce4 kg/gc-auto-windows-workaround later to maint). | |
413 | ||
414 | * The recursive merge strategy did not properly ensure there was no | |
415 | change between HEAD and the index before performing its operation, | |
416 | which has been corrected. | |
417 | (merge 55f39cf755 en/dirty-merge-fixes later to maint). | |
418 | ||
419 | * "git rebase" started exporting GIT_DIR environment variable and | |
420 | exposing it to hook scripts when part of it got rewritten in C. | |
421 | Instead of matching the old scripted Porcelains' behaviour, | |
422 | compensate by also exporting GIT_WORK_TREE environment as well to | |
423 | lessen the damage. This can harm existing hooks that want to | |
424 | operate on different repository, but the current behaviour is | |
425 | already broken for them anyway. | |
426 | (merge ab5e67d751 bc/sequencer-export-work-tree-as-well later to maint). | |
427 | ||
428 | * "git send-email" when using in a batched mode that limits the | |
429 | number of messages sent in a single SMTP session lost the contents | |
430 | of the variable used to choose between tls/ssl, unable to send the | |
431 | second and later batches, which has been fixed. | |
432 | (merge 636f3d7ac5 jm/send-email-tls-auth-on-batch later to maint). | |
433 | ||
434 | * The lazy clone support had a few places where missing but promised | |
435 | objects were not correctly tolerated, which have been fixed. | |
436 | ||
63749b2d JH |
437 | * One of the "diff --color-moved" mode "dimmed_zebra" that was named |
438 | in an unusual way has been deprecated and replaced by | |
439 | "dimmed-zebra". | |
440 | (merge e3f2f5f9cd es/diff-color-moved-fix later to maint). | |
441 | ||
442 | * The wire-protocol v2 relies on the client to send "ref prefixes" to | |
443 | limit the bandwidth spent on the initial ref advertisement. "git | |
444 | clone" when learned to speak v2 forgot to do so, which has been | |
445 | corrected. | |
446 | (merge 402c47d939 bw/clone-ref-prefixes later to maint). | |
447 | ||
448 | * "git diff --histogram" had a bad memory usage pattern, which has | |
449 | been rearranged to reduce the peak usage. | |
450 | (merge 79cb2ebb92 sb/histogram-less-memory later to maint). | |
451 | ||
452 | * Code clean-up to use size_t/ssize_t when they are the right type. | |
453 | (merge 7726d360b5 jk/size-t later to maint). | |
454 | ||
455 | * The wire-protocol v2 relies on the client to send "ref prefixes" to | |
456 | limit the bandwidth spent on the initial ref advertisement. "git | |
457 | fetch $remote branch:branch" that asks tags that point into the | |
458 | history leading to the "branch" automatically followed sent to | |
459 | narrow prefix and broke the tag following, which has been fixed. | |
460 | (merge 2b554353a5 jt/tag-following-with-proto-v2-fix later to maint). | |
461 | ||
462 | * When the sparse checkout feature is in use, "git cherry-pick" and | |
463 | other mergy operations lost the skip_worktree bit when a path that | |
464 | is excluded from checkout requires content level merge, which is | |
465 | resolved as the same as the HEAD version, without materializing the | |
466 | merge result in the working tree, which made the path appear as | |
467 | deleted. This has been corrected by preserving the skip_worktree | |
468 | bit (and not materializing the file in the working tree). | |
469 | (merge 2b75fb601c en/merge-recursive-skip-fix later to maint). | |
470 | ||
fa03cdc3 JH |
471 | * The "author-script" file "git rebase -i" creates got broken when |
472 | we started to move the command away from shell script, which is | |
473 | getting fixed now. | |
474 | (merge 5522bbac20 es/rebase-i-author-script-fix later to maint). | |
475 | ||
476 | * The automatic tree-matching in "git merge -s subtree" was broken 5 | |
477 | years ago and nobody has noticed since then, which is now fixed. | |
478 | (merge 2ec4150713 jk/merge-subtree-heuristics later to maint). | |
479 | ||
480 | * "git fetch $there refs/heads/s" ought to fetch the tip of the | |
481 | branch 's', but when "refs/heads/refs/heads/s", i.e. a branch whose | |
482 | name is "refs/heads/s" exists at the same time, fetched that one | |
483 | instead by mistake. This has been corrected to honor the usual | |
484 | disambiguation rules for abbreviated refnames. | |
485 | (merge 60650a48c0 jt/refspec-dwim-precedence-fix later to maint). | |
486 | ||
487 | * Futureproofing a helper function that can easily be misused. | |
488 | (merge 65bb21e77e es/want-color-fd-defensive later to maint). | |
489 | ||
490 | * The http-backend (used for smart-http transport) used to slurp the | |
491 | whole input until EOF, without paying attention to CONTENT_LENGTH | |
492 | that is supplied in the environment and instead expecting the Web | |
493 | server to close the input stream. This has been fixed. | |
494 | (merge eebfe40962 mk/http-backend-content-length later to maint). | |
495 | ||
496 | * "git merge --abort" etc. did not clean things up properly when | |
497 | there were conflicted entries in the index in certain order that | |
498 | are involved in D/F conflicts. This has been corrected. | |
499 | (merge ad3762042a en/abort-df-conflict-fixes later to maint). | |
500 | ||
501 | * "git diff --indent-heuristic" had a bad corner case performance. | |
502 | (merge 301ef85401 sb/indent-heuristic-optim later to maint). | |
503 | ||
7e8bfb04 JH |
504 | * The "--exec" option to "git rebase --rebase-merges" placed the exec |
505 | commands at wrong places, which has been corrected. | |
506 | ||
507 | * "git verify-tag" and "git verify-commit" have been taught to use | |
508 | the exit status of underlying "gpg --verify" to signal bad or | |
509 | untrusted signature they found. | |
510 | (merge 4e5dc9ca17 jc/gpg-status later to maint). | |
511 | ||
512 | * "git mergetool" stopped and gave an extra prompt to continue after | |
513 | the last path has been handled, which did not make much sense. | |
514 | (merge d651a54b8a ng/mergetool-lose-final-prompt later to maint). | |
515 | ||
516 | * Among the three codepaths we use O_APPEND to open a file for | |
517 | appending, one used for writing GIT_TRACE output requires O_APPEND | |
518 | implementation that behaves sensibly when multiple processes are | |
519 | writing to the same file. POSIX emulation used in the Windows port | |
520 | has been updated to improve in this area. | |
521 | (merge d641097589 js/mingw-o-append later to maint). | |
522 | ||
523 | * "git pull --rebase -v" in a repository with a submodule barfed as | |
524 | an intermediate process did not understand what "-v(erbose)" flag | |
525 | meant, which has been fixed. | |
526 | (merge e84c3cf3dc sb/pull-rebase-submodule later to maint). | |
527 | ||
528 | * Recent update to "git config" broke updating variable in a | |
529 | subsection, which has been corrected. | |
530 | (merge bff7df7a87 sb/config-write-fix later to maint). | |
531 | ||
532 | * When "git rebase -i" is told to squash two or more commits into | |
533 | one, it labeled the log message for each commit with its number. | |
534 | It correctly called the first one "1st commit", but the next one | |
535 | was "commit #1", which was off-by-one. This has been corrected. | |
536 | (merge dd2e36ebac pw/rebase-i-squash-number-fix later to maint). | |
537 | ||
538 | * "git rebase -i", when a 'merge <branch>' insn in its todo list | |
539 | fails, segfaulted, which has been (minimally) corrected. | |
540 | (merge bc9238bb09 pw/rebase-i-merge-segv-fix later to maint). | |
541 | ||
542 | * "git cherry-pick --quit" failed to remove CHERRY_PICK_HEAD even | |
543 | though we won't be in a cherry-pick session after it returns, which | |
544 | has been corrected. | |
545 | (merge 3e7dd99208 nd/cherry-pick-quit-fix later to maint). | |
546 | ||
b9dfa238 JH |
547 | * In a recent update in 2.18 era, "git pack-objects" started |
548 | producing a larger than necessary packfiles by missing | |
549 | opportunities to use large deltas. This has been corrected. | |
550 | ||
551 | * The meaning of the possible values the "core.checkStat" | |
552 | configuration variable can take were not adequately documented, | |
553 | which has been fixed. | |
554 | (merge 9bf5d4c4e2 nd/config-core-checkstat-doc later to maint). | |
555 | ||
c05048d4 JH |
556 | * Recent "git rebase -i" update started to write bogusly formatted |
557 | author-script, with a matching broken reading code. These are | |
558 | fixed. | |
559 | ||
560 | * Recent addition of "directory rename" heuristics to the | |
561 | merge-recursive backend makes the command susceptible to false | |
562 | positives and false negatives. In the context of "git am -3", | |
563 | which does not know about surrounding unmodified paths and thus | |
564 | cannot inform the merge machinery about the full trees involved, | |
565 | this risk is particularly severe. As such, the heuristic is | |
566 | disabled for "git am -3" to keep the machinery "more stupid but | |
567 | predictable". | |
568 | ||
569 | * "git merge-base" in 2.19-rc1 has performance regression when the | |
570 | (experimental) commit-graph feature is in use, which has been | |
571 | mitigated. | |
572 | ||
b7bd9486 | 573 | * Code cleanup, docfix, build fix, etc. |
ed843436 | 574 | (merge aee9be2ebe sg/update-ref-stdin-cleanup later to maint). |
e3331758 | 575 | (merge 037714252f jc/clean-after-sanity-tests later to maint). |
b7bd9486 JH |
576 | (merge 5b26c3c941 en/merge-recursive-cleanup later to maint). |
577 | (merge 0dcbc0392e bw/config-refer-to-gitsubmodules-doc later to maint). | |
578 | (merge bb4d000e87 bw/protocol-v2 later to maint). | |
579 | (merge 928f0ab4ba vs/typofixes later to maint). | |
580 | (merge d7f590be84 en/rebase-i-microfixes later to maint). | |
581 | (merge 81d395cc85 js/rebase-recreate-merge later to maint). | |
582 | (merge 51d1863168 tz/exclude-doc-smallfixes later to maint). | |
583 | (merge a9aa3c0927 ds/commit-graph later to maint). | |
584 | (merge 5cf8e06474 js/enhanced-version-info later to maint). | |
ffc6fa0e JH |
585 | (merge 6aaded5509 tb/config-default later to maint). |
586 | (merge 022d2ac1f3 sb/blame-color later to maint). | |
1d89318c | 587 | (merge 5a06a20e0c bp/test-drop-caches-for-windows later to maint). |
63749b2d JH |
588 | (merge dd61cc1c2e jk/ui-color-always-to-auto later to maint). |
589 | (merge 1e83b9bfdd sb/trailers-docfix later to maint). | |
590 | (merge ab29f1b329 sg/fast-import-dump-refs-on-checkpoint-fix later to maint). | |
591 | (merge 6a8ad880f0 jn/subtree-test-fixes later to maint). | |
592 | (merge ffbd51cc60 nd/pack-objects-threading-doc later to maint). | |
593 | (merge e9dac7be60 es/mw-to-git-chain-fix later to maint). | |
594 | (merge fe583c6c7a rs/remote-mv-leakfix later to maint). | |
fa03cdc3 JH |
595 | (merge 69885ab015 en/t3031-title-fix later to maint). |
596 | (merge 8578037bed nd/config-blame-sort later to maint). | |
597 | (merge 8ad169c4ba hn/config-in-code-comment later to maint). | |
598 | (merge b7446fcfdf ar/t4150-am-scissors-test-fix later to maint). | |
7e8bfb04 JH |
599 | (merge a8132410ee js/typofixes later to maint). |
600 | (merge 388d0ff6e5 en/update-index-doc later to maint). | |
601 | (merge e05aa688dd jc/update-index-doc later to maint). | |
602 | (merge 10c600172c sg/t5310-empty-input-fix later to maint). | |
603 | (merge 5641eb9465 jh/partial-clone-doc later to maint). | |
604 | (merge 2711b1ad5e ab/submodule-relative-url-tests later to maint). | |
b9dfa238 JH |
605 | (merge ce528de023 ab/unconditional-free-and-null later to maint). |
606 | (merge bbc072f5d8 rs/opt-updates later to maint). | |
607 | (merge 69d846f053 jk/use-compat-util-in-test-tool later to maint). | |
608 | (merge 1820703045 js/larger-timestamps later to maint). | |
609 | (merge c8b35b95e1 sg/t4051-fix later to maint). | |
610 | (merge 30612cb670 sg/t0020-conversion-fix later to maint). | |
611 | (merge 15da753709 sg/t7501-thinkofix later to maint). | |
612 | (merge 79b04f9b60 sg/t3903-missing-fix later to maint). | |
613 | (merge 2745817028 sg/t3420-autostash-fix later to maint). | |
614 | (merge 7afb0d6777 sg/test-rebase-editor-fix later to maint). | |
c05048d4 | 615 | (merge 6c6ce21baa es/freebsd-iconv-portability later to maint). |