]> git.ipfire.org Git - thirdparty/git.git/blob - Documentation/RelNotes/2.43.0.txt
Merge branch 'es/test-cron-safety'
[thirdparty/git.git] / Documentation / RelNotes / 2.43.0.txt
1 Git v2.43 Release Notes
2 =======================
3
4 Backward Compatibility Notes
5
6 * The "--rfc" option of "git format-patch" used to be a valid way to
7 override an earlier "--subject-prefix=<something>" on the command
8 line and replace it with "[RFC PATCH]", but from this release, it
9 merely prefixes the string "RFC " in front of the given subject
10 prefix. If you are negatively affected by this change, please use
11 "--subject-prefix=PATCH --rfc" as a replacement.
12
13 * In Git 2.42, "git rev-list --stdin" learned to take non-revisions
14 (like "--not") from the standard input, but the way such a "--not" was
15 handled was quite confusing, which has been rethought. The updated
16 rule is that "--not" given from the command line only affects revs
17 given from the command line that comes but not revs read from the
18 standard input, and "--not" read from the standard input affects
19 revs given from the standard input and not revs given from the
20 command line.
21
22 UI, Workflows & Features
23
24 * A message written in olden time prevented a branch from getting
25 checked out, saying it is already checked out elsewhere. But these
26 days, we treat a branch that is being bisected or rebased just like
27 a branch that is checked out and protect it from getting modified
28 with the same codepath. The message has been rephrased to say that
29 the branch is "in use" to avoid confusion.
30
31 * Hourly and other schedules of "git maintenance" jobs are randomly
32 distributed now.
33
34 * "git cmd -h" learned to signal which options can be negated by
35 listing such options like "--[no-]opt".
36
37 * The way authentication related data other than passwords (e.g.,
38 oauth token and password expiration data) are stored in libsecret
39 keyrings has been rethought.
40
41 * Update the libsecret and wincred credential helpers to correctly
42 match which credential to erase; they erased the wrong entry in
43 some cases.
44
45 * Git GUI updates.
46
47 * "git format-patch" learned a new "--description-file" option that
48 lets cover letter description to be fed; this can be used on
49 detached HEAD where there is no branch description available, and
50 also can override the branch description if there is one.
51
52 * Use of the "--max-pack-size" option to allow multiple packfiles to
53 be created is now supported even when we are sending unreachable
54 objects to cruft packs.
55
56 * "git format-patch --rfc --subject-prefix=<foo>" used to ignore the
57 "--subject-prefix" option and used "[RFC PATCH]"; now we will add
58 "RFC" prefix to whatever subject prefix is specified.
59
60 * "git log --format" has been taught the %(decorate) placeholder for
61 further customization over what the "--decorate" option offers.
62
63 * The default log message created by "git revert", when reverting a
64 commit that records a revert, has been tweaked, to encourage people
65 to describe complex "revert of revert of revert" situations better in
66 their own words.
67
68 * The command-line completion support (in contrib/) learned to
69 complete "git commit --trailer=" for possible trailer keys.
70
71 * "git update-index" learned the "--show-index-version" option to
72 inspect the index format version used by the on-disk index file.
73
74 * "git diff" learned the "diff.statNameWidth" configuration variable,
75 to give the default width for the name part in the "--stat" output.
76
77 * "git range-diff --notes=foo" compared "log --notes=foo --notes" of
78 the two ranges, instead of using just the specified notes tree,
79 which has been corrected to use only the specified notes tree.
80
81 * The command line completion script (in contrib/) can be told to
82 complete aliases by including ": git <cmd> ;" in the alias to tell
83 it that the alias should be completed in a similar way to how "git
84 <cmd>" is completed. The parsing code for the alias has been
85 loosened to allow ';' without an extra space before it.
86
87 * "git for-each-ref" and friends learned to apply mailmap to
88 authorname and other fields in a more flexible way than using
89 separate placeholder letters like %a[eElL] every time we want to
90 come up with small variants.
91
92 * "git repack" machinery learned to pay attention to the "--filter="
93 option.
94
95 * "git repack" learned the "--max-cruft-size" option to prevent cruft
96 packs from growing without bounds.
97
98 * "git merge-tree" learned to take strategy backend specific options
99 via the "-X" option, like "git merge" does.
100
101 * "git log" and friends learned the "--dd" option that is a
102 short-hand for "--diff-merges=first-parent -p".
103
104 * The attribute subsystem learned to honor the "attr.tree"
105 configuration variable that specifies which tree to read the
106 .gitattributes files from.
107
108 * "git merge-file" learns a mode to read three variants of the
109 contents to be merged from blob objects.
110
111
112 Performance, Internal Implementation, Development Support etc.
113
114 * "git check-attr" has been taught to work better with sparse-index.
115
116 * It may be tempting to leave the help text NULL for a command line
117 option that is either hidden or too obvious, but "git subcmd -h"
118 and "git subcmd --help-all" would have segfaulted if done so. Now
119 the help text is truly optional.
120
121 * Tests that are known to pass with LSan are now marked as such.
122
123 * Flaky "git p4" tests, as well as "git svn" tests, are now skipped
124 in the (rather expensive) sanitizer CI job.
125
126 * Tests with LSan from time to time seem to emit harmless messages
127 that make our tests unnecessarily flaky; we work around it by
128 filtering the uninteresting output.
129
130 * Unused parameters to functions are marked as such, and/or removed,
131 in order to bring us closer to "-Wunused-parameter" clean.
132
133 * The code to keep track of existing packs in the repository while
134 repacking has been refactored.
135
136 * The "streaming" interface used for bulk-checkin codepath has been
137 narrowed to take only blob objects for now, with no real loss of
138 functionality.
139
140 * GitHub CI workflow has learned to trigger Coverity check.
141
142 * Test coverage for trailers has been improved.
143
144 * The code to iterate over loose references has been optimized to
145 reduce the number of lstat() system calls.
146
147 * The codepaths that read "chunk" formatted files have been corrected
148 to pay attention to the chunk size and notice broken files.
149
150 * Replace macos-12 used at GitHub CI with macos-13.
151 (merge 682a868f67 js/ci-use-macos-13 later to maint).
152
153
154 Fixes since v2.42
155 -----------------
156
157 * Overly long label names used in the sequencer machinery are now
158 chopped to fit under filesystem limitation.
159
160 * Scalar updates.
161
162 * Tweak GitHub Actions CI so that pushing the same commit to multiple
163 branch tips at the same time will not waste building and testing
164 the same thing twice.
165
166 * The commit-graph verification code that detects a mixture of zero and
167 non-zero generation numbers has been updated.
168
169 * "git diff -w --exit-code" with various options did not work
170 correctly, which has been corrected.
171
172 * The "transfer.unpackLimit" configuration variable ought to be used
173 as a fallback, but overrode the more specific "fetch.unpackLimit"
174 and "receive.unpackLimit" configuration variables by mistake, which
175 has been corrected.
176
177 * The use of API between two calls to require_clean_work_tree() from
178 the sequencer code has been cleaned up for consistency.
179
180 * "git diff --no-such-option" and other corner cases around the exit
181 status of the "diff" command have been corrected.
182
183 * "git for-each-ref --sort='contents:size'" sorted the refs according
184 to size numerically, giving a ref that points at a blob twelve-byte
185 (12) long before showing a blob hundred-byte (100) long, which has
186 been corrected.
187
188 * We now limit the depth of the tree objects and maximum length of
189 pathnames recorded in tree objects.
190 (merge 4d5693ba05 jk/tree-name-and-depth-limit later to maint).
191
192 * Various fixes to the behavior of "rebase -i", when the command got
193 interrupted by conflicting changes, have been made.
194
195 * References from a description of the `--patch` option in various
196 manual pages have been simplified and improved.
197
198 * "git grep -e A --no-or -e B" is accepted, even though the negation
199 of the "--or" option did not mean anything, which has been tightened.
200
201 * The completion script (in contrib/) has been taught to treat the
202 "-t" option to "git checkout" and "git switch" just like the
203 "--track" option, to complete remote-tracking branches.
204
205 * "git diff --no-index -R <(one) <(two)" did not work correctly,
206 which has been corrected.
207
208 * "git maintenance" timers' implementation has been updated, based on
209 systemd timers, to work with WSL.
210
211 * "git diff --cached" codepath did not fill the necessary stat
212 information for a file when fsmonitor knows it is clean and ended
213 up behaving as if it were not clean, which has been corrected.
214
215 * How "alias.foo = : git cmd ; aliased-command-string" should be
216 spelled with necessary whitespace around punctuation marks to work
217 has been more clearly documented (but this will be moot with newer
218 versions of Git where the parsing rules have been improved).
219
220 * HTTP Header redaction code has been adjusted for a newer version of
221 cURL library that shows its traces differently from earlier
222 versions.
223
224 * An error message given by "git send-email", when given a malformed
225 address, did not show the offending address, which has been corrected.
226
227 * UBSan options were not propagated through the test framework to git
228 run via the httpd, unlike ASan options, which has been corrected.
229
230 * "checkout --merge -- path" and "update-index --unresolve path" did
231 not resurrect conflicted state that was resolved to remove path,
232 but now they do.
233 (merge 5bdedac3c7 jc/unresolve-removal later to maint).
234
235 * The display width table for unicode characters has been updated for
236 Unicode 15.1
237 (merge 872976c37e bb/unicode-width-table-15 later to maint).
238
239 * Update mailmap entry for Derrick.
240 (merge 6e5457d8c7 ds/mailmap-entry-update later to maint).
241
242 * In the ".gitmodules" files, submodules are keyed by their names,
243 and the path to the submodule whose name is $name is specified by
244 the submodule.$name.path variable. There were a few codepaths that
245 mixed the name and path up when consulting the submodule database,
246 which have been corrected. It took long for these bugs to be found
247 as the name of a submodule initially is the same as its path, and
248 the problem does not surface until it is moved to a different path,
249 which apparently happens very rarely.
250
251 * "git diff --merge-base X other args..." insisted that X must be a
252 commit and errored out when given an annotated tag that peels to a
253 commit, but we only need it to be a committish. This has been
254 corrected.
255 (merge 4adceb5a29 ar/diff-index-merge-base-fix later to maint).
256
257 * "git merge-tree" used to segfault when the "--attr-source"
258 option is used, which has been corrected.
259 (merge e95bafc52f jc/merge-ort-attr-index-fix later to maint).
260
261 * Unlike "git log --pretty=%D", "git log --pretty="%(decorate)" did
262 not auto-initialize the decoration subsystem, which has been
263 corrected.
264
265 * Feeding "git stash store" with a random commit that was not created
266 by "git stash create" now errors out.
267 (merge d9b6634589 jc/fail-stash-to-store-non-stash later to maint).
268
269 * The index file has room only for the lower 32-bit of the file size in
270 the cached stat information, which means cached stat information
271 will have 0 in its sd_size member for a file whose size is a multiple
272 of 4GiB. This is mistaken for a racily clean path. Avoid it by
273 storing a bogus sd_size value instead for such files.
274 (merge 5143ac07b1 bc/racy-4gb-files later to maint).
275
276 * "git p4" tried to store symlinks to LFS when told, but has been
277 fixed not to do so, because it does not make sense.
278 (merge 10c89a02b0 mm/p4-symlink-with-lfs later to maint).
279
280 * The codepath to handle recipient addresses `git send-email
281 --compose` learns from the user was completely broken, which has
282 been corrected.
283 (merge 3ec6167567 jk/send-email-fix-addresses-from-composed-messages later to maint).
284
285 * "cd sub && git grep -f patterns" tried to read "patterns" file at
286 the top level of the working tree; it has been corrected to read
287 "sub/patterns" instead.
288
289 * "git reflog expire --single-worktree" has been broken for the past
290 20 months or so, which has been corrected.
291
292 * "git send-email" did not have certain pieces of data computed yet
293 when it tried to validate the outgoing messages and its recipient
294 addresses, which has been sorted out.
295
296 * "git bugreport" learned to complain when it received a command line
297 argument that it will not use.
298
299 * The codepath to traverse the commit-graph learned to notice that a
300 commit is missing (e.g., corrupt repository lost an object), even
301 though it knows something about the commit (like its parents) from
302 what is in commit-graph.
303 (merge 7a5d604443 ps/do-not-trust-commit-graph-blindly-for-existence later to maint).
304
305 * "git rev-list --missing" did not work for missing commit objects,
306 which has been corrected.
307
308 * "git rev-list --unpacked --objects" failed to exclude packed
309 non-commit objects, which has been corrected.
310 (merge 7b3c8e9f38 tb/rev-list-unpacked-fix later to maint).
311
312 * "To dereference" and "to peel" were sometimes used in in-code
313 comments and documentation but without description in the glossary.
314 (merge 893dce2ffb vd/glossary-dereference-peel later to maint).
315
316 * Other code cleanup, docfix, build fix, etc.
317 (merge c2c349a15c xz/commit-title-soft-limit-doc later to maint).
318 (merge 1bd809938a tb/format-pack-doc-update later to maint).
319 (merge 8f81532599 an/clang-format-typofix later to maint).
320 (merge 3ca86adc2d la/strvec-header-fix later to maint).
321 (merge 6789275d37 jc/test-i18ngrep later to maint).
322 (merge 9972cd6004 ps/leakfixes later to maint).
323 (merge 46edab516b tz/send-email-helpfix later to maint).