summaryrefslogtreecommitdiff
path: root/Documentation/RelNotes/2.34.0.txt
blob: 7b03e625d02b180bd0f7ed3524e616dd863a810a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
Git 2.34 Release Notes
======================

Updates since Git 2.33
----------------------

UI, Workflows & Features

 * Pathname expansion (like "~username/") learned a way to specify a
   location relative to Git installation (e.g. its $sharedir which is
   $(prefix)/share), with "%(prefix)".

 * Use `ort` instead of `recursive` as the default merge strategy.

 * The userdiff pattern for "java" language has been updated.

 * "git rebase" by default skips changes that are equivalent to
   commits that are already in the history the branch is rebased onto;
   give messages when this happens to let the users be aware of
   skipped commits, and also teach them how to tell "rebase" to keep
   duplicated changes.

 * The advice message that "git cherry-pick" gives when it asks
   conflicted replay of a commit to be resolved by the end user has
   been updated.

 * After "git clone --recurse-submodules", all submodules are cloned
   but they are not by default recursed into by other commands.  With
   submodule.stickyRecursiveClone configuration set, submodule.recurse
   configuration is set to true in a repository created by "clone"
   with "--recurse-submodules" option.

 * The logic for auto-correction of misspelt subcommands learned to go
   interactive when the help.autocorrect configuration variable is set
   to 'prompt'.

 * "git maintenance" scheduler learned to use systemd timers as a
   possible backend.

 * "git diff --submodule=diff" showed failure from run_command() when
   trying to run diff inside a submodule, when the user manually
   removes the submodule directory.

 * "git bundle unbundle" learned to show progress display.

 * In cone mode, the sparse-index code path learned to remove ignored
   files (like build artifacts) outside the sparse cone, allowing the
   entire directory outside the sparse cone to be removed, which is
   especially useful when the sparse patterns change.

 * Taking advantage of the CGI interface, http-backend has been
   updated to enable protocol v2 automatically when the other side
   asks for it.

 * The credential-cache helper has been adjusted to Windows.

 * The error in "git help no-such-git-command" is handled better.

 * The unicode character width table (used for output alignment) has
   been updated.


Performance, Internal Implementation, Development Support etc.

 * "git bisect" spawned "git show-branch" only to pretty-print the
   title of the commit after checking out the next version to be
   tested; this has been rewritten in C.

 * "git add" can work better with the sparse index.

 * Support for ancient versions of cURL library (pre 7.19.4) has been
   dropped.

 * A handful of tests that assumed implementation details of files
   backend for refs have been cleaned up.

 * trace2 logs learned to show parent process name to see in what
   context Git was invoked.

 * Loading of ref tips to prepare for common ancestry negotiation in
   "git fetch-pack" has been optimized by taking advantage of the
   commit graph when available.

 * Remind developers that the userdiff patterns should be kept simple
   and permissive, assuming that the contents they apply are always
   syntactically correct.

 * The current implementation of GIT_TEST_FAIL_PREREQS is broken in
   that checking for the lack of a prerequisite would not work.  Avoid
   the use of "if ! test_have_prereq X" in a test script.

 * The revision traversal API has been optimized by taking advantage
   of the commit-graph, when available, to determine if a commit is
   reachable from any of the existing refs.

 * "git fetch --quiet" optimization to avoid useless computation of
   info that will never be displayed.

 * Callers from older advice_config[] based API has been updated to
   use the newer advice_if_enabled() and advice_enabled() API.

 * Teach "test_pause" and "debug" helpers to allow using the HOME and
   TERM environment variables the user usually uses.

 * "make INSTALL_STRIP=-s install" allows the installation step to use
   "install -s" to strip the binaries as they get installed.

 * Code that handles large number of refs in the "git fetch" code
   path has been optimized.

 * The reachability bitmap file used to be generated only for a single
   pack, but now we've learned to generate bitmaps for history that
   span across multiple packfiles.

 * The code to make "git grep" recurse into submodules has been
   updated to migrate away from the "add submodule's object store as
   an alternate object store" mechanism (which is suboptimal).

 * The tracing of process ancestry information has been enhanced.

 * Reduce number of write(2) system calls while sending the
   ref advertisement.

 * Update the build procedure to use the "-pedantic" build when
   DEVELOPER makefile macro is in effect.

 * Large part of "git submodule add" gets rewritten in C.

 * The run-command API has been updated so that the callers can easily
   ask the file descriptors open for packfiles to be closed immediately
   before spawning commands that may trigger auto-gc.

 * An oddball OPTION_ARGUMENT feature has been removed from the
   parse-options API.


Fixes since v2.33
-----------------

 * Input validation of "git pack-objects --stdin-packs" has been
   corrected.
   (merge 561fa03529 ab/pack-stdin-packs-fix later to maint).

 * Bugfix for common ancestor negotiation recently introduced in "git
   push" code path.
   (merge 82823118b9 jt/push-negotiation-fixes later to maint).

 * "git pull" had various corner cases that were not well thought out
   around its --rebase backend, e.g. "git pull --ff-only" did not stop
   but went ahead and rebased when the history on other side is not a
   descendant of our history.  The series tries to fix them up.
   (merge 6f843a3355 en/pull-conflicting-options later to maint).

 * "git apply" miscounted the bytes and failed to read to the end of
   binary hunks.
   (merge 46d723ce57 jk/apply-binary-hunk-parsing-fix later to maint).

 * "git range-diff" code clean-up.
   (merge c4d5907324 jk/range-diff-fixes later to maint).

 * "git commit --fixup" now works with "--edit" again, after it was
   broken in v2.32.
   (merge 8ef6aad664 jk/commit-edit-fixup-fix later to maint).

 * Use upload-artifacts v1 (instead of v2) for 32-bit linux, as the
   new version has a blocker bug for that architecture.
   (merge 3cf9bb36bf cb/ci-use-upload-artifacts-v1 later to maint).

 * Checking out all the paths from HEAD during the last conflicted
   step in "git rebase" and continuing would cause the step to be
   skipped (which is expected), but leaves MERGE_MSG file behind in
   $GIT_DIR and confuses the next "git commit", which has been
   corrected.
   (merge e5ee33e855 pw/rebase-skip-final-fix later to maint).

 * Various bugs in "git rebase -r" have been fixed.
   (merge f2563c9ef3 pw/rebase-r-fixes later to maint).

 * mmap() imitation used to call xmalloc() that dies upon malloc()
   failure, which has been corrected to just return an error to the
   caller to be handled.
   (merge 95b4ff3931 rs/git-mmap-uses-malloc later to maint).

 * "git diff --relative" segfaulted and/or produced incorrect result
   when there are unmerged paths.
   (merge 8174627b3d dd/diff-files-unmerged-fix later to maint).

 * The delayed checkout code path in "git checkout" etc. were chatty
   even when --quiet and/or --no-progress options were given.
   (merge 7a132c628e mt/quiet-with-delayed-checkout later to maint).

 * "git branch -D <branch>" used to refuse to remove a broken branch
   ref that points at a missing commit, which has been corrected.
   (merge 597a977489 rs/branch-allow-deleting-dangling later to maint).

 * Build update for Apple clang.
   (merge f32c5d3716 cb/makefile-apple-clang later to maint).

 * The parser for the "--nl" option of "git column" has been
   corrected.
   (merge c93ca46cf5 sg/column-nl later to maint).

 * "git upload-pack" which runs on the other side of "git fetch"
   forgot to take the ref namespaces into account when handling
   want-ref requests.
   (merge 53a66ec37c ka/want-ref-in-namespace later to maint).

 * The sparse-index support can corrupt the index structure by storing
   a stale and/or uninitialized data, which has been corrected.
   (merge d9e9b44d7a jh/sparse-index-resize-fix later to maint).

 * Buggy tests could damage repositories outside the throw-away test
   area we created.  We now by default export GIT_CEILING_DIRECTORIES
   to limit the damage from such a stray test.
   (merge 614c3d8f2e sg/set-ceiling-during-tests later to maint).

 * Even when running "git send-email" without its own threaded
   discussion support, a threading related header in one message is
   carried over to the subsequent message to result in an unwanted
   threading, which has been corrected.
   (merge e082113484 mh/send-email-reset-in-reply-to later to maint).

 * The output from "git fast-export", when its anonymization feature
   is in use, showed an annotated tag incorrectly.
   (merge 2f040a9671 tk/fast-export-anonymized-tag-fix later to maint).

 * Doc update plus improved error reporting.
   (merge 1e93770888 jk/log-warn-on-bogus-encoding later to maint).

 * Recent "diff -m" changes broke "gitk", which has been corrected.
   (merge 5acffd3473 so/diff-index-regression-fix later to maint).

 * Regression fix.
   (merge b996f84989 ab/send-email-config-fix later to maint).

 * The "git apply -3" code path learned not to bother the lower level
   merge machinery when the three-way merge can be trivially resolved
   without the content level merge.  This fixes a regression caused by
   recent "-3way first and fall back to direct application" change.
   (merge 57f183b698 jc/trivial-threeway-binary-merge later to maint).

 * The code that optionally creates the *.rev reverse index file has
   been optimized to avoid needless computation when it is not writing
   the file out.
   (merge 8fe8bae9d2 ab/reverse-midx-optim later to maint).

 * "git range-diff -I... <range> <range>" segfaulted, which has been
   corrected.
   (merge 709b3f32d3 rs/range-diff-avoid-segfault-with-I later to maint).

 * The order in which various files that make up a single (conceptual)
   packfile has been reevaluated and straightened up.  This matters in
   correctness, as an incomplete set of files must not be shown to a
   running Git.
   (merge 4bc1fd6e39 tb/pack-finalize-ordering later to maint).

 * The "mode" word is useless in a call to open(2) that does not
   create a new file.  Such a call in the files backend of the ref
   subsystem has been cleaned up.
   (merge 35cf94eaf6 rs/no-mode-to-open-when-appending later to maint).

 * "git update-ref --stdin" failed to flush its output as needed,
   which potentially led the conversation to a deadlock.
   (merge 7c1200745b ps/update-ref-batch-flush later to maint).

 * When "git am --abort" fails to abort correctly, it still exited
   with exit status of 0, which has been corrected.
   (merge c5ead19ea2 en/am-abort-fix later to maint).

 * Correct nr and alloc members of strvec struct to be of type size_t.
   (merge 8d133a4653 jk/strvec-typefix later to maint).

 * "git stash", where the tentative change involves changing a
   directory to a file (or vice versa), was confused, which has been
   corrected.
   (merge bee8691f19 en/stash-df-fix later to maint).

 * "git clone" from a repository whose HEAD is unborn into a bare
   repository didn't follow the branch name the other side used, which
   is corrected.
   (merge 6b58df54cf jk/clone-unborn-head-in-bare later to maint).

 * "git cvsserver" had a long-standing bug in its authentication code,
   which has finally been corrected (it is unclear and is a separate
   question if anybody is seriously using it, though).
   (merge 4b81f690f6 cb/cvsserver later to maint).

 * "git difftool --dir-diff" mishandled symbolic links.
   (merge 5bafb3576a da/difftool-dir-diff-symlink-fix later to maint).

 * Sensitive data in the HTTP trace were supposed to be redacted, but
   we failed to do so in HTTP/2 requests.
   (merge b66c77a64e jk/http-redact-fix later to maint).

 * "make clean" has been updated to remove leftover .depend/
   directories, even when it is not told to use them to compute header
   dependencies.
   (merge f0a74bcb03 ab/make-clean-depend-dirs later to maint).

 * Protocol v0 clients can get stuck parsing a malformed feature line.
   (merge 44d2aec6e8 ah/connect-parse-feature-v0-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 1d9c8daef8 ab/bundle-doc later to maint).
   (merge 81483fe613 en/merge-strategy-docs later to maint).
   (merge 626beebdf8 js/log-protocol-version later to maint).
   (merge 00e302da76 cb/builtin-merge-format-string-fix later to maint).
   (merge ad51ae4dc0 cb/ci-freebsd-update later to maint).
   (merge be6444d1ca fc/completion-updates later to maint).
   (merge ff7b83f562 ti/tcsh-completion-regression-fix later to maint).
   (merge 325b06deda sg/make-fix-ar-invocation later to maint).
   (merge bd72824c60 me/t5582-cleanup later to maint).
   (merge f6a5af0f62 ga/send-email-sendmail-cmd later to maint).
   (merge f58c7468cd ab/ls-remote-packet-trace later to maint).
   (merge 0160f7e725 ab/rebase-fatal-fatal-fix later to maint).
   (merge a16eb6b1ff js/maintenance-launchctl-fix later to maint).
   (merge c21b2511c2 jk/t5323-no-pack-test-fix later to maint).
   (merge 5146c2f148 mh/credential-leakfix later to maint).
   (merge 1549577338 dd/t6300-wo-gpg-fix later to maint).
   (merge 66e905b7dd rs/xopen-reports-open-failures later to maint).
   (merge 469888e6a5 es/walken-tutorial-fix later to maint).
   (merge 88682b016d ba/object-info later to maint).
   (merge b45c172e51 ab/gc-log-rephrase later to maint).
   (merge ccdd5d1eb1 ab/mailmap-leakfix later to maint).
   (merge 6540b71614 cb/remote-ndebug-fix later to maint).
   (merge e4f8d27585 rs/show-branch-simplify later to maint).
   (merge e124ecf7f7 rs/archive-use-object-id later to maint).
   (merge cebead1ebf cb/ci-build-pedantic later to maint).
   (merge ca0cc98e03 bs/doc-bugreport-outdir later to maint).
   (merge 72b113e562 ab/no-more-check-bindir later to maint).
   (merge 92a5d1c9b4 jc/prefix-filename-allocates later to maint).
   (merge d9a65b6c0a rs/setup-use-xopen-and-xdup later to maint).
   (merge e8f55568de jk/t5562-racefix later to maint).
   (merge 8f0f110156 rs/drop-core-compression-vars later to maint).
   (merge b6d8887d3d ma/doc-git-version later to maint).
   (merge 66c0c44df6 cb/plug-leaks-in-alloca-emu-users later to maint).
   (merge afb32e8101 kz/revindex-comment-fix later to maint).
   (merge ae578de926 po/git-config-doc-mentions-help-c later to maint).
   (merge 187fc8b8b6 cb/unicode-14 later to maint).
   (merge 3584cff71c en/typofixes later to maint).
   (merge f188160be9 ab/bundle-remove-verbose-option later to maint).
   (merge 8c6b4332b4 rs/close-pack-leakfix later to maint).
   (merge 51b04c05b7 bs/difftool-msg-tweak later to maint).
   (merge dd20e4a6db ab/make-compdb-fix later to maint).