Autogenerated HTML docs for v2.42.0-526-g3130c1
[git-htmldocs.git] / RelNotes / 2.43.0.txt
blobad3b82fe0a28ca53df0bb9b649ce5beb98800719
1 Git v2.43 Release Notes
2 =======================
4 Backward Compatibility Notes
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.
13  * "git rev-list --stdin" learned to take non-revisions (like "--not")
14    recently 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 stanrdard input and not revs given from the
20    command line.
22 UI, Workflows & Features
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.  Rephrase the message
28    to say that the branch is in use.
30  * Hourly and other schedule of "git maintenance" jobs are randomly
31    distributed now.
33  * "git cmd -h" learned to signal which options can be negated by
34    listing such options like "--[no-]opt".
36  * The way authentication related data other than passwords (e.g.
37    oath token and password expiration data) are stored in libsecret
38    keyrings has been rethought.
40  * Update two credential helpers to correctly match which credential
41    to erase; they dropped not the ones with stale password.
43  * Git GUI updates.
45  * "git format-patch" learns a way to feed cover letter description,
46    that (1) can be used on detached HEAD where there is no branch
47    description available, and (2) also can override the branch
48    description if there is one.
50  * Use of --max-pack-size to allow multiple packfiles to be created is
51    now supported even when we are sending unreachable objects to cruft
52    packs.
54  * "git format-patch --rfc --subject-prefix=<foo>" used to ignore the
55    "--subject-prefix" option and used "[RFC PATCH]"; now we will add
56    "RFC" prefix to whatever subject prefix is specified.
58  * "git log --format" has been taught the %(decorate) placeholder.
60  * The default log message created by "git revert", when reverting a
61    commit that records a revert, has been tweaked, to encourage people
62    describe complex "revert of revert of revert" situation better in
63    their own words.
65  * The command-line complation support (in contrib/) learned to
66    complete "git commit --trailer=" for possible trailer keys.
68  * "git update-index" learns "--show-index-version" to inspect
69    the index format version used by the on-disk index file.
71  * "git diff" learned diff.statNameWidth configuration variable, to
72    give the default width for the name part in the "--stat" output.
74  * "git range-diff --notes=foo" compared "log --notes=foo --notes" of
75    the two ranges, instead of using just the specified notes tree.
77  * The command line completion script (in contrib/) can be told to
78    complete aliases by including ": git <cmd> ;" in the alias to tell
79    it that the alias should be completed similar to how "git <cmd>" is
80    completed.  The parsing code for the alias as been loosened to
81    allow ';' without an extra space before it.
83  * "git for-each-ref" and friends learned to apply mailmap to
84    authorname and other fields.
86  * "git repack" machinery learns to pay attention to the "--filter="
87    option.
89  * "git repack" learned "--max-cruft-size" to prevent cruft packs from
90    growing without bounds.
92  * "git merge-tree" learned to take strategy backend specific options
93    via the "-X" option, like "git merge" does.
95  * "git log" and friends learned "--dd" that is a short-hand for
96    "--diff-merges=first-parent -p".
98  * The attribute subsystem learned to honor `attr.tree` configuration
99    that specifies which tree to read the .gitattributes files from.
102 Performance, Internal Implementation, Development Support etc.
104  * "git check-attr" has been taught to work better with sparse-index.
106  * It may be tempting to leave the help text NULL for a command line
107    option that is either hidden or too obvious, but "git subcmd -h"
108    and "git subcmd --help-all" would have segfaulted if done so.  Now
109    the help text is optional.
111  * Tests that are known to pass with LSan are now marked as such.
112    (merge 5fafe8c95f tb/mark-more-tests-as-leak-free later to maint).
114  * Flaky "git p4" tests, as well as "git svn" tests, are now skipped
115    in the (rather expensive) sanitizer CI job.
116    (merge 6ba913629f js/ci-san-skip-p4-and-svn-tests later to maint).
118  * Tests with LSan from time to time seem to emit harmless message
119    that makes our tests unnecessarily flaky; we work it around by
120    filtering the uninteresting output.
121    (merge 370ef7e40d jk/test-lsan-denoise-output later to maint).
123  * Unused parameters to functions are marked as such, and/or removed,
124    in order to bring us closer to -Wunused-parameter clean.
126  * The code to keep track of existing packs in the repository while
127    repacking has been refactored.
129  * The "streaming" interface used for bulk-checkin codepath has been
130    narrowed to take only blob objects for now, with no real loss of
131    functionality.
133  * GitHub CI workflow has learned to trigger Coverity check.
134    (merge 3349520e1a js/ci-coverity later to maint).
136  * Test coverage for trailers has been improved.
138  * The code to iterate over loose references have been optimized to
139    reduce the number of lstat() system calls.
140    (merge 2cdb796101 vd/loose-ref-iteration-optimization later to maint).
142  * The codepaths that read "chunk" formatted files have been corrected
143    to pay attention to the chunk size and notice broken files.
146 Fixes since v2.42
147 -----------------
149  * Overly long label names used in the sequencer machinery are now
150    chopped to fit under filesystem limitation.
151    (merge ac300bda10 mp/rebase-label-length-limit later to maint).
153  * Scalar updates.
154    (merge f9a547d3a7 ds/scalar-updates later to maint).
156  * Tweak GitHub Actions CI so that pushing the same commit to multiple
157    branch tips at the same time will not waste building and testing
158    the same thing twice.
159    (merge 99fe06cbfd jc/ci-skip-same-commit later to maint).
161  * The commit-graph verification code that detects mixture of zero and
162    non-zero generation numbers has been updated.
163    (merge db6044d762 tb/commit-graph-verify-fix later to maint).
165  * "git diff -w --exit-code" with various options did not work
166    correctly, which is being addressed.
167    (merge a64f8b2595 jc/diff-exit-code-with-w-fixes later to maint).
169  * transfer.unpackLimit ought to be used as a fallback, but overrode
170    fetch.unpackLimit and receive.unpackLimit instead.
171    (merge f3d33f8cfe ts/unpacklimit-config-fix later to maint).
173  * The use of API between two calls to require_clean_work_tree() from
174    the sequencer code has been cleaned up for consistency.
175    (merge a9b5955e07 ob/sequencer-empty-hint-fix later to maint).
177  * "git diff --no-such-option" and other corner cases around the exit
178    status of the "diff" command has been corrected.
179    (merge 5cc6b2d70b jk/diff-result-code-cleanup later to maint).
181  * "git for-each-ref --sort='contents:size'" sorts the refs according
182    to size numerically, giving a ref that points at a blob twelve-byte
183    (12) long before showing a blob hundred-byte (100) long.
184    (merge 6d79cd8474 ks/ref-filter-sort-numerically later to maint).
186  * We now limit depth of the tree objects and maximum length of
187    pathnames recorded in tree objects.
188    (merge 4d5693ba05 jk/tree-name-and-depth-limit later to maint).
190  * Various fixes to the behavior of "rebase -i" when the command got
191    interrupted by conflicting changes.
192    (merge 203573b024 pw/rebase-i-after-failure later to maint).
194  * References from description of the `--patch` option in various
195    manual pages have been simplified and improved.
196    (merge 11422f23e3 so/diff-doc-for-patch-update later to maint).
198  * "git grep -e A --no-or -e B" is accepted, even though the negation
199    of "or" did not mean anything, which has been tightened.
200    (merge aae8558b10 rs/grep-no-no-or later to maint).
202  * The completion script (in contrib/) has been taught to treat the
203    "-t" option to "git checkout" and "git switch" just like the
204    "--track" option, to complete remote-tracking branches.
205    (merge 9f892830d6 js/complete-checkout-t later to maint).
207  * "git diff --no-index -R <(one) <(two)" did not work correctly,
208    which has been corrected.
209    (merge 48944f214c pw/diff-no-index-from-named-pipes later to maint).
211  * Update "git maintenance" timers' implementation based on systemd
212    timers to work with WSL.
213    (merge 5e8515e8e8 js/systemd-timers-wsl-fix later to maint).
215  * "git diff --cached" codepath did not fill the necessary stat
216    information for a file when fsmonitor knows it is clean and ended
217    up behaving as if it is not clean, which has been corrected.
218    (merge 6a044a2048 js/diff-cached-fsmonitor-fix later to maint).
220  * Clarify how "alias.foo = : git cmd ; aliased-command-string" should
221    be spelled with necessary whitespaces around punctuation marks to
222    work.
223    (merge 4333267995 pb/completion-aliases-doc later to maint).
225  * HTTP Header redaction code has been adjusted for a newer version of
226    cURL library that shows its traces differently from earlier
227    versions.
228    (merge 0763c3a2c4 jk/redact-h2h3-headers-fix later to maint).
230  * An error message given by "git send-email" when given a malformed
231    address did not give correct information, which has been corrected.
232    (merge 12288cc44e tb/send-email-extract-valid-address-error-message-fix later to maint).
234  * UBSan options were not propagated through the test framework to git
235    run via the httpd, unlike ASan options, which has been corrected.
236    (merge 252d693797 jk/test-pass-ubsan-options-to-http-test later to maint).
238  * "checkout --merge -- path" and "update-index --unresolve path" did
239    not resurrect conflicted state that was resolved to remove path,
240    but now they do.
241    (merge 5bdedac3c7 jc/unresolve-removal later to maint).
243  * The display width table for unicode characters has been updated for
244    Unicode 15.1
245    (merge 872976c37e bb/unicode-width-table-15 later to maint).
247  * Update mailmap entry for Derrick.
248    (merge 6e5457d8c7 ds/mailmap-entry-update later to maint).
250  * In .gitmodules files, submodules are keyed by their names, and the
251    path to the submodule whose name is $name is specified by the
252    submodule.$name.path variable.  There were a few codepaths that
253    mixed the name and path up when consulting the submodule database,
254    which have been corrected.  It took long for these bugs to be found
255    as the name of a submodule initially is the same as its path, and
256    the problem does not surface until it is moved to a different path,
257    which apparently happens very rarely.
259  * "git diff --merge-base X other args..." insisted that X must be a
260    commit and errored out when given an annotated tag that peels to a
261    commit, but we only need it to be a committish.  This has been
262    corrected.
263    (merge 4adceb5a29 ar/diff-index-merge-base-fix later to maint).
265  * Fix "git merge-tree" to stop segfaulting when the --attr-source
266    option is used.
267    (merge e95bafc52f jc/merge-ort-attr-index-fix later to maint).
269  * Unlike "git log --pretty=%D", "git log --pretty="%(decorate)" did
270    not auto-initialize the decoration subsystem, which has been
271    corrected.
273  * Feeding "git stash store" with a random commit that was not created
274    by "git stash create" now errors out.
275    (merge d9b6634589 jc/fail-stash-to-store-non-stash later to maint).
277  * The index file has room only for lower 32-bit of the file size in
278    the cached stat information, which means cached stat information
279    will have 0 in its sd_size member for a file whose size is multiple
280    of 4GiB.  This is mistaken for a racily clean path.  Avoid it by
281    storing a bogus sd_size value instead for such files.
282    (merge 5143ac07b1 bc/racy-4gb-files later to maint).
284  * "git p4" tried to store symlinks to LFS when told, but has been
285    fixed not to do so, because it does not make sense.
286    (merge 10c89a02b0 mm/p4-symlink-with-lfs later to maint).
288  * The codepath to handle recipient addresses `git send-email
289    --compose` learns from the user was completely broken, which has
290    been corrected.
291    (merge 3ec6167567 jk/send-email-fix-addresses-from-composed-messages later to maint).
293  * Other code cleanup, docfix, build fix, etc.
294    (merge fd3ba590d8 ws/git-push-doc-grammofix later to maint).
295    (merge 5f33a843de ds/upload-pack-error-sequence-fix later to maint).
296    (merge beaa1d952b jk/function-pointer-mismatches-fix later to maint).
297    (merge b46d806ea5 ob/t9001-indent-fix later to maint).
298    (merge fdc9914c28 ja/worktree-orphan later to maint).
299    (merge c2cbefc510 jc/mv-d-to-d-error-message-fix later to maint).
300    (merge d0fc552bfc ch/t6300-verify-commit-test-cleanup later to maint).
301    (merge aa4b83dd5e ws/git-svn-retire-faketerm later to maint).
302    (merge edf80d23f1 jk/ci-retire-allow-ref later to maint).
303    (merge 256a94ef6c bc/more-git-var later to maint).
304    (merge 82af2c639c ob/sequencer-reword-error-message later to maint).
305    (merge 2a63c79dae rs/grep-parseopt-simplify later to maint).
306    (merge 078c42531e rs/name-rev-use-opt-hidden-bool later to maint).
307    (merge 63642d58b4 ob/sequencer-remove-dead-code later to maint).
308    (merge 8aae489756 ob/t3404-typofix later to maint).
309    (merge 58be11432e eg/config-type-path-docfix later to maint).
310    (merge 563f339d98 ch/clean-docfix later to maint).
311    (merge 4fbe83fcd9 hy/doc-show-is-like-log-not-diff-tree later to maint).
312    (merge 43abaaf008 ob/am-msgfix later to maint).
313    (merge c2c349a15c xz/commit-title-soft-limit-doc later to maint).
314    (merge f4cbb32c27 rs/parse-opt-ctx-cleanup later to maint).
315    (merge badf2fe1c3 jk/decoration-and-other-leak-fixes later to maint).
316    (merge cebfaaa333 sn/cat-file-doc-update later to maint).
317    (merge 8b3aa36f5a ps/rewritten-is-per-worktree-doc later to maint).
318    (merge ffbf6a748d jc/update-list-references-to-lore later to maint).
319    (merge 14d569b1a7 jc/am-doc-whitespace-action-fix later to maint).
320    (merge 48399e9cf0 ni/die-message-fix-for-git-add later to maint).
321    (merge ca3285dd69 ps/git-repack-doc-fixes later to maint).
322    (merge 243c79fdc7 wx/merge-ort-comment-typofix later to maint).
323    (merge a060705d94 jc/commit-new-underscore-index-fix later to maint).
324    (merge f6d83e2115 ms/doc-push-fix later to maint).