]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/RelNotes/2.30.0.txt
Merge branch 'pk/subsub-fetch-fix'
[thirdparty/git.git] / Documentation / RelNotes / 2.30.0.txt
CommitLineData
1d1c4a87
JH
1Git 2.30 Release Notes
2======================
3
4Updates since v2.29
5-------------------
6
7UI, Workflows & Features
8
f9b6481a
JH
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
e2850a27
JH
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
7f7ebe05
JH
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
e4d83eee
JH
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
faefdd61
JH
66 * "git archive" now allows compression level higher than "-9"
67 when generating tar.gz output.
68
e4d83eee
JH
69 * Zsh autocompletion (in contrib/) update.
70
b291b0a6
JH
71 * The maximum length of output filenames "git format-patch" creates
72 has become configurable (used to be capped at 64).
73
74 * "git rev-parse" learned the "--end-of-options" to help scripts to
75 safely take a parameter that is supposed to be a revision, e.g.
76 "git rev-parse --verify -q --end-of-options $rev".
77
e67fbf92
JH
78 * The command line completion script (in contrib/) learned to expand
79 commands that are alias of alias.
80
1d1c4a87
JH
81
82Performance, Internal Implementation, Development Support etc.
83
f9b6481a
JH
84 * Use "git archive" more to produce the release tarball.
85
e2850a27
JH
86 * GitHub Actions automated test improvement to skip tests on a tree
87 identical to what has already been tested.
f9b6481a 88
7f7ebe05
JH
89 * Test-coverage for running commit-graph task "git maintenance" has
90 been extended.
91
92 * Our test scripts can be told to run only individual pieces while
93 skipping others with the "--run=..." option; they were taught to
94 take a substring of test title, in addition to numbers, to name the
95 test pieces to run.
96
97 * Adjust tests so that they won't scream when the default initial
98 branch name is changed to 'main'.
99
e4d83eee
JH
100 * Rewriting "git bisect" in C continues.
101
102 * More preliminary tests have been added to document desired outcome
103 of various "directory rename" situations.
104
105 * Micro clean-up of a couple of test scripts.
106
107 * "git diff" and other commands that share the same machinery to
108 compare with working tree files have been taught to take advantage
109 of the fsmonitor data when available.
110
111 * The code to detect premature EOF in the sideband demultiplexer has
112 been cleaned up.
113
114 * Test scripts are being prepared to transition of the default branch
115 name to 'main'.
116
faefdd61
JH
117 * "git fetch --depth=<n>" over the stateless RPC / smart HTTP
118 transport handled EOF from the client poorly at the server end.
e4d83eee 119
b291b0a6
JH
120 * A specialization of hashmap that uses a string as key has been
121 introduced. Hopefully it will see wider use over time.
122
e67fbf92
JH
123 * "git bisect start/next" in a large span of history spends a lot of
124 time trying to come up with exactly the half-way point; this can be
125 optimized by stopping when we see a commit that is close enough to
126 the half-way point.
127
128 * A lazily defined test prerequisite can now be defined in terms of
129 another lazily defined test prerequisite.
130
72ffeb99
JH
131 * Expectation for the original contributor after responding to a
132 review comment to use the explanation in a patch update has been
133 described.
134
135 * Multiple "credential-store" backends can race to lock the same
136 file, causing everybody else but one to fail---reattempt locking
137 with some timeout to reduce the rate of the failure.
138
1d1c4a87
JH
139
140Fixes since v2.29
141-----------------
142
143 * In 2.29, "--committer-date-is-author-date" option of "rebase" and
144 "am" subcommands lost the e-mail address by mistake, which has been
145 corrected.
146 (merge 5f35edd9d7 jk/committer-date-is-author-date-fix later to maint).
147
f9b6481a
JH
148 * "git checkout -p A...B [-- <path>]" did not work, even though the
149 same command without "-p" correctly used the merge-base between
150 commits A and B.
151 (merge 35166b1fb5 dl/checkout-p-merge-base later to maint).
152
7f7ebe05
JH
153 * The side-band status report can be sent at the same time as the
154 primary payload multiplexed, but the demultiplexer on the receiving
155 end incorrectly split a single status report into two, which has
156 been corrected.
157 (merge 712b0377db js/avoid-split-sideband-message later to maint).
158
159 * "git fast-import" wasted a lot of memory when many marks were in use.
160 (merge 3f018ec716 jk/fast-import-marks-alloc-fix later to maint).
161
162 * A test helper "test_cmp A B" was taught to diagnose missing files A
163 or B as a bug in test, but some tests legitimately wanted to notice
164 a failure to even create file B as an error, in addition to leaving
165 the expected result in it, and were misdiagnosed as a bug. This
166 has been corrected.
167 (merge 262d5ad5a5 es/test-cmp-typocatcher later to maint).
168
169 * When "git commit-graph" detects the same commit recorded more than
170 once while it is merging the layers, it used to die. The code now
171 ignores all but one of them and continues.
172 (merge 85102ac71b ds/commit-graph-merging-fix later to maint).
173
174 * The meaning of a Signed-off-by trailer can vary from project to
175 project; this and also what it means to this project has been
176 clarified in the documentation.
177 (merge 3abd4a67d9 bk/sob-dco later to maint).
178
179 * "git credential' didn't honor the core.askPass configuration
180 variable (among other things), which has been corrected.
181 (merge 567ad2c0f9 tk/credential-config later to maint).
182
183 * Dev support to catch a tentative definition of a variable in our C
184 code as an error.
185 (merge 5539183622 jk/no-common later to maint).
186
187 * "git rebase --rebase-merges" did not correctly pass --gpg-sign
188 command line option to underlying "git merge" when replaying a merge
189 using non-default merge strategy or when replaying an octopus merge
190 (because replaying a two-head merge with the default strategy was
191 done in a separate codepath, the problem did not trigger for most
192 users), which has been corrected.
193 (merge 43ad4f2eca sc/sequencer-gpg-octopus later to maint).
194
195 * "git apply -R" did not handle patches that touch the same path
196 twice correctly, which has been corrected. This is most relevant
197 in a patch that changes a path from a regular file to a symbolic
198 link (and vice versa).
199 (merge b0f266de11 jt/apply-reverse-twice later to maint).
200
201 * A recent oid->hash conversion missed one spot, breaking "git svn".
202 (merge 03bb366de4 bc/svn-hash-oid-fix later to maint).
203
e31aba42
JH
204 * The documentation on the "--abbrev=<n>" option did not say the
205 output may be longer than "<n>" hexdigits, which has been
206 clarified.
207 (merge cda34e0d0c jc/abbrev-doc later to maint).
208
209 * "git p4" now honors init.defaultBranch configuration.
210 (merge 1b09d1917f js/p4-default-branch later to maint).
211
212 * Recently the format of an internal state file "rebase -i" uses has
213 been tightened up for consistency, which would hurt those who start
214 "rebase -i" with old git and then continue with new git. Loosen
215 the reader side a bit (which we may want to tighten again in a year
216 or so).
217 (merge c779386182 jc/sequencer-stopped-sha-simplify later to maint).
218
faefdd61
JH
219 * The code to see if "git stash drop" can safely remove refs/stash
220 has been made more carerful.
221 (merge 4f44c5659b rs/empty-reflog-check-fix later to maint).
222
223 * "git log -L<range>:<path>" is documented to take no pathspec, but
224 this was not enforced by the command line option parser, which has
225 been corrected.
226 (merge 39664cb0ac jc/line-log-takes-no-pathspec later to maint).
227
228 * "git format-patch --output=there" did not work as expected and
229 instead crashed. The option is now supported.
230 (merge dc1672dd10 jk/format-patch-output later to maint).
231
232 * Define ARM64 compiled with MSVC to be little-endian.
233 (merge 0c038fc65a dg/bswap-msvc later to maint).
234
235 * "git rebase -i" did not store ORIG_HEAD correctly.
236 (merge 8843302307 pw/rebase-i-orig-head later to maint).
237
238 * "git blame -L :funcname -- path" did not work well for a path for
239 which a userdiff driver is defined.
240
241 * "make DEVELOPER=1 sparse" used to run sparse and let it emit
242 warnings; now such warnings will cause an error.
243 (merge 521dc56270 jc/sparse-error-for-developer-build later to maint).
244
245 * "git blame --ignore-revs-file=<file>" learned to ignore a
246 non-existent object name in the input, instead of complaining.
247 (merge c714d05875 jc/blame-ignore-fix later to maint).
248
b291b0a6
JH
249 * Running "git diff" while allowing external diff in a state with
250 unmerged paths used to segfault, which has been corrected.
251 (merge d66851806f jk/diff-release-filespec-fix later to maint).
252
253 * Build configuration cleanup.
254 (merge b990f02fd8 ab/config-mak-uname-simplify later to maint).
255
256 * Fix regression introduced when nvimdiff support in mergetool was added.
257 (merge 12026f46e7 pd/mergetool-nvimdiff later to maint).
258
e67fbf92
JH
259 * The exchange between receive-pack and proc-receive hook did not
260 carefully check for errors.
261
262 * The code was not prepared to deal with pack .idx file that is
263 larger than 4GB.
264 (merge 81c4c5cf2e jk/4gb-idx later to maint).
265
266 * "git fetch" did not work correctly with nested submodules where the
267 innermost submodule that is not of interest got updated in the
268 upstream, which has been corrected.
269 (merge 1b7ac4e6d4 pk/subsub-fetch-fix later to maint).
270
271 * Since jgit does not yet work with SHA-256 repositories, mark the
272 tests that uses it not to run unless we are testing with ShA-1
273 repositories.
274 (merge ea699b4adc sg/t5310-jgit-wants-sha1 later to maint).
275
72ffeb99
JH
276 * Config parser fix for "git notes".
277 (merge 45fef1599a na/notes-displayref-is-not-boolean later to maint).
278
279 * Move a definition of compatibility wrapper from cache.h to
280 git-compat-util.h
281 (merge a76b138daa hn/sleep-millisec-decl later to maint).
282
283 * Error message fix.
284 (merge eaf5341538 km/stash-error-message-fix later to maint).
285
1d1c4a87
JH
286 * Other code cleanup, docfix, build fix, etc.
287 (merge 3e0a5dc9af cc/doc-filter-branch-typofix later to maint).
f9b6481a
JH
288 (merge 32c83afc2c cw/ci-ghwf-check-ws-errors later to maint).
289 (merge 5eb2ed691b rs/tighten-callers-of-deref-tag later to maint).
7f7ebe05
JH
290 (merge 6db29ab213 jk/fast-import-marks-cleanup later to maint).
291 (merge e5cf6d3df4 nk/dir-c-comment-update later to maint).
292 (merge 5710dcce74 jk/report-fn-typedef later to maint).
293 (merge 9a82db1056 en/sequencer-rollback-lock-cleanup later to maint).
294 (merge 4e1bee9a99 js/t7006-cleanup later to maint).
295 (merge f5bcde6c58 es/tutorial-mention-asciidoc-early later to maint).
e31aba42
JH
296 (merge 714d491af0 so/format-patch-doc-on-default-diff-format later to maint).
297 (merge 0795df4b9b rs/clear-commit-marks-in-repo later to maint).
298 (merge 9542d56379 sd/prompt-local-variable later to maint).
299 (merge 06d43fad18 rs/pack-write-hashwrite-simplify later to maint).
300 (merge b7e20b4373 mc/typofix later to maint).
301 (merge f6bcd9a8a4 js/test-whitespace-fixes later to maint).
302 (merge 53b67a801b js/test-file-size later to maint).
e67fbf92
JH
303 (merge 970909c2a7 rs/hashwrite-be64 later to maint).
304 (merge 5a923bb1f0 ma/list-object-filter-opt-msgfix later to maint).
305 (merge 1c3e412916 rs/archive-plug-leak-refname later to maint).
306 (merge d44e5267ea rs/plug-diff-cache-leak later to maint).
72ffeb99
JH
307 (merge 793c1464d3 ab/gc-keep-base-option later to maint).
308 (merge b86339b12b mt/worktree-error-message-fix later to maint).
309 (merge e01ae2a4a7 js/pull-rebase-use-advise later to maint).