]> git.ipfire.org Git - thirdparty/git.git/blob - Documentation/RelNotes/2.34.0.txt
refs tests: ignore ignore errno in test-ref-store helper
[thirdparty/git.git] / Documentation / RelNotes / 2.34.0.txt
1 Git 2.34 Release Notes
2 ======================
3
4 Updates since Git 2.33
5 ----------------------
6
7 UI, Workflows & Features
8
9 * Pathname expansion (like "~username/") learned a way to specify a
10 location relative to Git installation (e.g. its $sharedir which is
11 $(prefix)/share), with "%(prefix)".
12
13 * Use `ort` instead of `recursive` as the default merge strategy.
14
15 * The userdiff pattern for "java" language has been updated.
16
17 * "git rebase" by default skips changes that are equivalent to
18 commits that are already in the history the branch is rebased onto;
19 give messages when this happens to let the users be aware of
20 skipped commits, and also teach them how to tell "rebase" to keep
21 duplicated changes.
22
23 * The advice message that "git cherry-pick" gives when it asks
24 conflicted replay of a commit to be resolved by the end user has
25 been updated.
26
27 * After "git clone --recurse-submodules", all submodules are cloned
28 but they are not by default recursed into by other commands. With
29 submodule.stickyRecursiveClone configuration set, submodule.recurse
30 configuration is set to true in a repository created by "clone"
31 with "--recurse-submodules" option.
32
33 * The logic for auto-correction of misspelt subcommands learned to go
34 interactive when the help.autocorrect configuration variable is set
35 to 'prompt'.
36
37 * "git maintenance" scheduler learned to use systemd timers as a
38 possible backend.
39
40 * "git diff --submodule=diff" showed failure from run_command() when
41 trying to run diff inside a submodule, when the user manually
42 removes the submodule directory.
43
44 * "git bundle unbundle" learned to show progress display.
45
46 * In cone mode, the sparse-index code path learned to remove ignored
47 files (like build artifacts) outside the sparse cone, allowing the
48 entire directory outside the sparse cone to be removed, which is
49 especially useful when the sparse patterns change.
50
51 * Taking advantage of the CGI interface, http-backend has been
52 updated to enable protocol v2 automatically when the other side
53 asks for it.
54
55 * The credential-cache helper has been adjusted to Windows.
56
57 * The error in "git help no-such-git-command" is handled better.
58
59 * The unicode character width table (used for output alignment) has
60 been updated.
61
62 * The ref iteration code used to optionally allow dangling refs to be
63 shown, which has been tightened up.
64
65 * "git add", "git mv", and "git rm" have been adjusted to avoid
66 updating paths outside of the sparse-checkout definition unless
67 the user specifies a "--sparse" option.
68
69
70 Performance, Internal Implementation, Development Support etc.
71
72 * "git bisect" spawned "git show-branch" only to pretty-print the
73 title of the commit after checking out the next version to be
74 tested; this has been rewritten in C.
75
76 * "git add" can work better with the sparse index.
77
78 * Support for ancient versions of cURL library (pre 7.19.4) has been
79 dropped.
80
81 * A handful of tests that assumed implementation details of files
82 backend for refs have been cleaned up.
83
84 * trace2 logs learned to show parent process name to see in what
85 context Git was invoked.
86
87 * Loading of ref tips to prepare for common ancestry negotiation in
88 "git fetch-pack" has been optimized by taking advantage of the
89 commit graph when available.
90
91 * Remind developers that the userdiff patterns should be kept simple
92 and permissive, assuming that the contents they apply are always
93 syntactically correct.
94
95 * The current implementation of GIT_TEST_FAIL_PREREQS is broken in
96 that checking for the lack of a prerequisite would not work. Avoid
97 the use of "if ! test_have_prereq X" in a test script.
98
99 * The revision traversal API has been optimized by taking advantage
100 of the commit-graph, when available, to determine if a commit is
101 reachable from any of the existing refs.
102
103 * "git fetch --quiet" optimization to avoid useless computation of
104 info that will never be displayed.
105
106 * Callers from older advice_config[] based API has been updated to
107 use the newer advice_if_enabled() and advice_enabled() API.
108
109 * Teach "test_pause" and "debug" helpers to allow using the HOME and
110 TERM environment variables the user usually uses.
111
112 * "make INSTALL_STRIP=-s install" allows the installation step to use
113 "install -s" to strip the binaries as they get installed.
114
115 * Code that handles large number of refs in the "git fetch" code
116 path has been optimized.
117
118 * The reachability bitmap file used to be generated only for a single
119 pack, but now we've learned to generate bitmaps for history that
120 span across multiple packfiles.
121
122 * The code to make "git grep" recurse into submodules has been
123 updated to migrate away from the "add submodule's object store as
124 an alternate object store" mechanism (which is suboptimal).
125
126 * The tracing of process ancestry information has been enhanced.
127
128 * Reduce number of write(2) system calls while sending the
129 ref advertisement.
130
131 * Update the build procedure to use the "-pedantic" build when
132 DEVELOPER makefile macro is in effect.
133
134 * Large part of "git submodule add" gets rewritten in C.
135
136 * The run-command API has been updated so that the callers can easily
137 ask the file descriptors open for packfiles to be closed immediately
138 before spawning commands that may trigger auto-gc.
139
140 * An oddball OPTION_ARGUMENT feature has been removed from the
141 parse-options API.
142
143 * The mergesort implementation used to sort linked list has been
144 optimized.
145
146 * Remove external declaration of functions that no longer exist.
147
148 * "git multi-pack-index write --bitmap" learns to propagate the
149 hashcache from original bitmap to resulting bitmap.
150
151 * CI learns to run the leak sanitizer builds.
152
153 * "git grep --recurse-submodules" takes trees and blobs from the
154 submodule repository, but the textconv settings when processing a
155 blob from the submodule is not taken from the submodule repository.
156 A test is added to demonstrate the issue, without fixing it.
157
158 * Teach "git help -c" into helping the command line completion of
159 configuration variables.
160
161 * When "git cmd -h" shows more than one line of usage text (e.g.
162 the cmd subcommand may take sub-sub-command), parse-options API
163 learned to align these lines, even across i18n/l10n.
164
165 * Prevent "make sparse" from running for the source files that
166 haven't been modified.
167
168
169 Fixes since v2.33
170 -----------------
171
172 * Input validation of "git pack-objects --stdin-packs" has been
173 corrected.
174
175 * Bugfix for common ancestor negotiation recently introduced in "git
176 push" code path.
177
178 * "git pull" had various corner cases that were not well thought out
179 around its --rebase backend, e.g. "git pull --ff-only" did not stop
180 but went ahead and rebased when the history on other side is not a
181 descendant of our history. The series tries to fix them up.
182
183 * "git apply" miscounted the bytes and failed to read to the end of
184 binary hunks.
185
186 * "git range-diff" code clean-up.
187
188 * "git commit --fixup" now works with "--edit" again, after it was
189 broken in v2.32.
190
191 * Use upload-artifacts v1 (instead of v2) for 32-bit linux, as the
192 new version has a blocker bug for that architecture.
193
194 * Checking out all the paths from HEAD during the last conflicted
195 step in "git rebase" and continuing would cause the step to be
196 skipped (which is expected), but leaves MERGE_MSG file behind in
197 $GIT_DIR and confuses the next "git commit", which has been
198 corrected.
199
200 * Various bugs in "git rebase -r" have been fixed.
201
202 * mmap() imitation used to call xmalloc() that dies upon malloc()
203 failure, which has been corrected to just return an error to the
204 caller to be handled.
205
206 * "git diff --relative" segfaulted and/or produced incorrect result
207 when there are unmerged paths.
208
209 * The delayed checkout code path in "git checkout" etc. were chatty
210 even when --quiet and/or --no-progress options were given.
211
212 * "git branch -D <branch>" used to refuse to remove a broken branch
213 ref that points at a missing commit, which has been corrected.
214
215 * Build update for Apple clang.
216
217 * The parser for the "--nl" option of "git column" has been
218 corrected.
219
220 * "git upload-pack" which runs on the other side of "git fetch"
221 forgot to take the ref namespaces into account when handling
222 want-ref requests.
223
224 * The sparse-index support can corrupt the index structure by storing
225 a stale and/or uninitialized data, which has been corrected.
226
227 * Buggy tests could damage repositories outside the throw-away test
228 area we created. We now by default export GIT_CEILING_DIRECTORIES
229 to limit the damage from such a stray test.
230
231 * Even when running "git send-email" without its own threaded
232 discussion support, a threading related header in one message is
233 carried over to the subsequent message to result in an unwanted
234 threading, which has been corrected.
235
236 * The output from "git fast-export", when its anonymization feature
237 is in use, showed an annotated tag incorrectly.
238
239 * Doc update plus improved error reporting.
240
241 * Recent "diff -m" changes broke "gitk", which has been corrected.
242
243 * Regression fix.
244
245 * The "git apply -3" code path learned not to bother the lower level
246 merge machinery when the three-way merge can be trivially resolved
247 without the content level merge. This fixes a regression caused by
248 recent "-3way first and fall back to direct application" change.
249
250 * The code that optionally creates the *.rev reverse index file has
251 been optimized to avoid needless computation when it is not writing
252 the file out.
253
254 * "git range-diff -I... <range> <range>" segfaulted, which has been
255 corrected.
256
257 * The order in which various files that make up a single (conceptual)
258 packfile has been reevaluated and straightened up. This matters in
259 correctness, as an incomplete set of files must not be shown to a
260 running Git.
261
262 * The "mode" word is useless in a call to open(2) that does not
263 create a new file. Such a call in the files backend of the ref
264 subsystem has been cleaned up.
265
266 * "git update-ref --stdin" failed to flush its output as needed,
267 which potentially led the conversation to a deadlock.
268
269 * When "git am --abort" fails to abort correctly, it still exited
270 with exit status of 0, which has been corrected.
271
272 * Correct nr and alloc members of strvec struct to be of type size_t.
273
274 * "git stash", where the tentative change involves changing a
275 directory to a file (or vice versa), was confused, which has been
276 corrected.
277
278 * "git clone" from a repository whose HEAD is unborn into a bare
279 repository didn't follow the branch name the other side used, which
280 is corrected.
281
282 * "git cvsserver" had a long-standing bug in its authentication code,
283 which has finally been corrected (it is unclear and is a separate
284 question if anybody is seriously using it, though).
285
286 * "git difftool --dir-diff" mishandled symbolic links.
287
288 * Sensitive data in the HTTP trace were supposed to be redacted, but
289 we failed to do so in HTTP/2 requests.
290
291 * "make clean" has been updated to remove leftover .depend/
292 directories, even when it is not told to use them to compute header
293 dependencies.
294
295 * Protocol v0 clients can get stuck parsing a malformed feature line.
296
297 * A few kinds of changes "git status" can show were not documented.
298 (merge d2a534c515 ja/doc-status-types-and-copies later to maint).
299
300 * Other code cleanup, docfix, build fix, etc.
301 (merge f188160be9 ab/bundle-remove-verbose-option later to maint).
302 (merge 8c6b4332b4 rs/close-pack-leakfix later to maint).
303 (merge 51b04c05b7 bs/difftool-msg-tweak later to maint).
304 (merge dd20e4a6db ab/make-compdb-fix later to maint).
305 (merge 6ffb990dc4 os/status-docfix later to maint).
306 (merge 100c2da2d3 rs/p3400-lose-tac later to maint).
307 (merge 76f3b69896 tb/aggregate-ignore-leading-whitespaces later to maint).