Fifth batch
[git] / Documentation / RelNotes / 2.30.0.txt
1 Git 2.30 Release Notes
2 ======================
3
4 Updates since v2.29
5 -------------------
6
7 UI, Workflows & Features
8
9  * Userdiff for PHP update.
10
11  * Userdiff for Rust update.
12
13  * Userdiff for CSS update.
14
15  * The command line completion script (in contrib/) learned that "git
16    stash show" takes the options "git diff" takes.
17
18  * "git worktree list" now shows if each worktree is locked.  This
19    possibly may open us to show other kinds of states in the future.
20
21  * "git maintenance", an extended big brother of "git gc", continues
22    to evolve.
23
24  * "git push --force-with-lease[=<ref>]" can easily be misused to lose
25    commits unless the user takes good care of their own "git fetch".
26    A new option "--force-if-includes" attempts to ensure that what is
27    being force-pushed was created after examining the commit at the
28    tip of the remote ref that is about to be force-replaced.
29
30  * "git clone" learned clone.defaultremotename configuration variable
31    to customize what nickname to use to call the remote the repository
32    was cloned from.
33
34  * "git checkout" learned to use checkout.guess configuration variable
35    and enable/disable its "--[no-]guess" option accordingly.
36
37  * "git resurrect" script (in contrib/) learned that the object names
38    may be longer than 40-hex depending on the hash function in use.
39
40  * "git diff A...B" learned "git diff --merge-base A B", which is a
41    longer short-hand to say the same thing.
42
43  * A sample 'push-to-checkout' hook, that performs the same as
44    what the built-in default action does, has been added.
45
46  * "git diff" family of commands learned the "-I<regex>" option to
47    ignore hunks whose changed lines all match the given pattern.
48
49  * The userdiff pattern learned to identify the function definition in
50    POSIX shells and bash.
51
52  * "git checkout-index" did not consistently signal an error with its
53    exit status, but now it does.
54
55  * A commit and tag object may have CR at the end of each and
56    every line (you can create such an object with hash-object or
57    using --cleanup=verbatim to decline the default clean-up
58    action), but it would make it impossible to have a blank line
59    to separate the title from the body of the message.  We are now
60    more lenient and accept a line with lone CR on it as a blank line,
61    too.
62
63  * Exit codes from "git remote add" etc. were not usable by scripted
64    callers, but now they are.
65
66  * Zsh autocompletion (in contrib/) update.
67
68
69 Performance, Internal Implementation, Development Support etc.
70
71  * Use "git archive" more to produce the release tarball.
72
73  * GitHub Actions automated test improvement to skip tests on a tree
74    identical to what has already been tested.
75
76  * Test-coverage for running commit-graph task "git maintenance" has
77    been extended.
78
79  * Our test scripts can be told to run only individual pieces while
80    skipping others with the "--run=..." option; they were taught to
81    take a substring of test title, in addition to numbers, to name the
82    test pieces to run.
83
84  * Adjust tests so that they won't scream when the default initial
85    branch name is changed to 'main'.
86
87  * Rewriting "git bisect" in C continues.
88
89  * More preliminary tests have been added to document desired outcome
90    of various "directory rename" situations.
91
92  * Micro clean-up of a couple of test scripts.
93
94  * "git diff" and other commands that share the same machinery to
95    compare with working tree files have been taught to take advantage
96    of the fsmonitor data when available.
97
98  * The code to detect premature EOF in the sideband demultiplexer has
99    been cleaned up.
100
101  * Test scripts are being prepared to transition of the default branch
102    name to 'main'.
103
104
105
106 Fixes since v2.29
107 -----------------
108
109  * In 2.29, "--committer-date-is-author-date" option of "rebase" and
110    "am" subcommands lost the e-mail address by mistake, which has been
111    corrected.
112    (merge 5f35edd9d7 jk/committer-date-is-author-date-fix later to maint).
113
114  * "git checkout -p A...B [-- <path>]" did not work, even though the
115    same command without "-p" correctly used the merge-base between
116    commits A and B.
117    (merge 35166b1fb5 dl/checkout-p-merge-base later to maint).
118
119  * The side-band status report can be sent at the same time as the
120    primary payload multiplexed, but the demultiplexer on the receiving
121    end incorrectly split a single status report into two, which has
122    been corrected.
123    (merge 712b0377db js/avoid-split-sideband-message later to maint).
124
125  * "git fast-import" wasted a lot of memory when many marks were in use.
126    (merge 3f018ec716 jk/fast-import-marks-alloc-fix later to maint).
127
128  * A test helper "test_cmp A B" was taught to diagnose missing files A
129    or B as a bug in test, but some tests legitimately wanted to notice
130    a failure to even create file B as an error, in addition to leaving
131    the expected result in it, and were misdiagnosed as a bug.  This
132    has been corrected.
133    (merge 262d5ad5a5 es/test-cmp-typocatcher later to maint).
134
135  * When "git commit-graph" detects the same commit recorded more than
136    once while it is merging the layers, it used to die.  The code now
137    ignores all but one of them and continues.
138    (merge 85102ac71b ds/commit-graph-merging-fix later to maint).
139
140  * The meaning of a Signed-off-by trailer can vary from project to
141    project; this and also what it means to this project has been
142    clarified in the documentation.
143    (merge 3abd4a67d9 bk/sob-dco later to maint).
144
145  * "git credential' didn't honor the core.askPass configuration
146    variable (among other things), which has been corrected.
147    (merge 567ad2c0f9 tk/credential-config later to maint).
148
149  * Dev support to catch a tentative definition of a variable in our C
150    code as an error.
151    (merge 5539183622 jk/no-common later to maint).
152
153  * "git rebase --rebase-merges" did not correctly pass --gpg-sign
154    command line option to underlying "git merge" when replaying a merge
155    using non-default merge strategy or when replaying an octopus merge
156    (because replaying a two-head merge with the default strategy was
157    done in a separate codepath, the problem did not trigger for most
158    users), which has been corrected.
159    (merge 43ad4f2eca sc/sequencer-gpg-octopus later to maint).
160
161  * "git apply -R" did not handle patches that touch the same path
162    twice correctly, which has been corrected.  This is most relevant
163    in a patch that changes a path from a regular file to a symbolic
164    link (and vice versa).
165    (merge b0f266de11 jt/apply-reverse-twice later to maint).
166
167  * A recent oid->hash conversion missed one spot, breaking "git svn".
168    (merge 03bb366de4 bc/svn-hash-oid-fix later to maint).
169
170  * The documentation on the "--abbrev=<n>" option did not say the
171    output may be longer than "<n>" hexdigits, which has been
172    clarified.
173    (merge cda34e0d0c jc/abbrev-doc later to maint).
174
175  * "git p4" now honors init.defaultBranch configuration.
176    (merge 1b09d1917f js/p4-default-branch later to maint).
177
178  * Recently the format of an internal state file "rebase -i" uses has
179    been tightened up for consistency, which would hurt those who start
180    "rebase -i" with old git and then continue with new git.  Loosen
181    the reader side a bit (which we may want to tighten again in a year
182    or so).
183    (merge c779386182 jc/sequencer-stopped-sha-simplify later to maint).
184
185  * Other code cleanup, docfix, build fix, etc.
186    (merge 3e0a5dc9af cc/doc-filter-branch-typofix later to maint).
187    (merge 32c83afc2c cw/ci-ghwf-check-ws-errors later to maint).
188    (merge 5eb2ed691b rs/tighten-callers-of-deref-tag later to maint).
189    (merge 6db29ab213 jk/fast-import-marks-cleanup later to maint).
190    (merge e5cf6d3df4 nk/dir-c-comment-update later to maint).
191    (merge 5710dcce74 jk/report-fn-typedef later to maint).
192    (merge 9a82db1056 en/sequencer-rollback-lock-cleanup later to maint).
193    (merge 4e1bee9a99 js/t7006-cleanup later to maint).
194    (merge f5bcde6c58 es/tutorial-mention-asciidoc-early later to maint).
195    (merge 714d491af0 so/format-patch-doc-on-default-diff-format later to maint).
196    (merge 0795df4b9b rs/clear-commit-marks-in-repo later to maint).
197    (merge 9542d56379 sd/prompt-local-variable later to maint).
198    (merge 06d43fad18 rs/pack-write-hashwrite-simplify later to maint).
199    (merge b7e20b4373 mc/typofix later to maint).
200    (merge f6bcd9a8a4 js/test-whitespace-fixes later to maint).
201    (merge 53b67a801b js/test-file-size later to maint).