]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/RelNotes/2.25.0.txt
Merge branch 'en/fill-directory-fixes'
[thirdparty/git.git] / Documentation / RelNotes / 2.25.0.txt
CommitLineData
d9f6f3b6
JH
1Git 2.25 Release Notes
2======================
3
4Updates since v2.24
5-------------------
6
7Backward compatibility notes
8
9
10UI, Workflows & Features
11
12 * A tutorial on object enumeration has been added.
13
14 * The branch description ("git branch --edit-description") has been
15 used to fill the body of the cover letters by the format-patch
16 command; this has been enhanced so that the subject can also be
17 filled.
18
19 * "git rebase --preserve-merges" has been marked as deprecated; this
20 release stops advertising it in the "git rebase -h" output.
21
22 * The code to generate multi-pack index learned to show (or not to
23 show) progress indicators.
24
25 * "git apply --3way" learned to honor merge.conflictStyle
26 configuration variable, like merges would.
27
28 * The custom format for "git log --format=<format>" learned the l/L
29 placeholder that is similar to e/E that fills in the e-mail
30 address, but only the local part on the left side of '@'.
31
228f5313
JH
32 * Documentation pages for "git shortlog" now list commit limiting
33 options explicitly.
34
35 * The patterns to detect function boundary for Elixir language has
36 been added.
37
38 * The completion script (in contrib/) learned that the "--onto"
39 option of "git rebase" can take its argument as the value of the
40 option.
41
083378cc
JH
42 * The userdiff machinery has been taught that "async def" is another
43 way to begin a "function" in Python.
44
45 * "git range-diff" learned to take the "--notes=<ref>" and the
46 "--no-notes" options to control the commit notes included in the
47 log message that gets compared.
48
49 * "git rev-parse --show-toplevel" run outside of any working tree did
50 not error out, which has been corrected.
51
ad05a3d8
JH
52 * A few commands learned to take the pathspec from the
53 standard input or a named file, instead of taking it as the command
54 line arguments.
55
56 * "git rebase -i" learned a few options that are known by "git
57 rebase" proper.
58
59 * "git submodule" learned a subcommand "set-url".
60
61 * "git log" family learned "--pretty=reference" that gives the name
62 of a commit in the format that is often used to refer to it in log
63 messages.
64
65 * The interaction between "git clone --recurse-submodules" and
66 alternate object store was ill-designed. The documentation and
67 code have been taught to make more clear recommendations when the
68 users see failures.
69
d9f6f3b6
JH
70
71Performance, Internal Implementation, Development Support etc.
72
73 * Debugging support for lazy cloning has been a bit improved.
74
75 * Move the definition of a set of bitmask constants from 0ctal
76 literal to (1U<<count) notation.
77
78 * Test updates to prepare for SHA-2 transition continues.
79
228f5313
JH
80 * Crufty code and logic accumulated over time around the object
81 parsing and low-level object access used in "git fsck" have been
82 cleaned up.
83
84 * The implementation of "git log --graph" got refactored and then its
85 output got simplified.
86
87 * Follow recent push to move API docs from Documentation/ to header
88 files and update config.h
89
90 * "git bundle" has been taught to use the parse options API. "git
91 bundle verify" learned "--quiet" and "git bundle create" learned
92 options to control the progress output.
93
94 * Handling of commit objects that use non UTF-8 encoding during
95 "rebase -i" has been improved.
96
083378cc
JH
97 * The beginning of rewriting "git add -i" in C.
98
99 * A label used in the todo list that are generated by "git rebase
100 --rebase-merges" is used as a part of a refname; the logic to come
101 up with the label has been tightened to avoid names that cannot be
102 used as such.
103
104 * The logic to avoid duplicate label names generated by "git rebase
105 --rebase-merges" forgot that the machinery itself uses "onto" as a
106 label name, which must be avoided by auto-generated labels, which
107 has been corrected.
108
109 * We have had compatibility fallback macro definitions for "PRIuMAX",
110 "PRIu32", etc. but did not for "PRIdMAX", while the code used the
111 last one apparently without any hiccup reported recently. The
112 fallback macro definitions for these <inttypes.h> macros that must
113 appear in C99 systems have been removed.
114
115 * Recently we have declared that GIT_TEST_* variables take the
116 usual boolean values (it used to be that some used "non-empty
117 means true" and taking GIT_TEST_VAR=YesPlease as true); make
118 sure we notice and fail when non-bool strings are given to
119 these variables.
120
121 * Users of oneway_merge() (like "reset --hard") learned to take
122 advantage of fsmonitor to avoid unnecessary lstat(2) calls.
123
559c6fc3
JH
124 * Performance tweak on "git push" into a repository with many refs
125 that point at objects we have never heard of.
126
127 * PerfTest fix to avoid stale result mixed up with the latest round
128 of test results.
129
ad05a3d8
JH
130 * Hide lower-level verify_signed-buffer() API as a pure helper to
131 implement the public check_signature() function, in order to
132 encourage new callers to use the correct and more strict
133 validation.
134
b02fd2ac
JH
135 * Unnecessary reading of state variables back from the disk during
136 sequencer operation has been reduced.
137
138 * The code has been made to avoid gmtime() and localtime() and prefer
139 their reentrant counterparts.
140
141 * "git add -i" that is getting rewritten in C has been extended to
142 cover subcommands other than the "patch".
143
144 * In a repository with many packfiles, the cost of the procedure that
145 avoids registering the same packfile twice was unnecessarily high
146 by using an inefficient search algorithm, which has been corrected.
147
d9f6f3b6
JH
148
149Fixes since v2.24
150-----------------
151
152 * "rebase -i" ceased to run post-commit hook by mistake in an earlier
153 update, which has been corrected.
154
155 * "git notes copy $original" ought to copy the notes attached to the
156 original object to HEAD, but a mistaken tightening to command line
157 parameter validation made earlier disabled that feature by mistake.
158
159 * When all files from some subdirectory were renamed to the root
160 directory, the directory rename heuristics would fail to detect that
161 as a rename/merge of the subdirectory to the root directory, which has
162 been corrected.
163
164 * Code clean-up and a bugfix in the logic used to tell worktree local
165 and repository global refs apart.
166 (merge f45f88b2e4 sg/dir-trie-fixes later to maint).
167
168 * "git stash save" in a working tree that is sparsely checked out
169 mistakenly removed paths that are outside the area of interest.
170 (merge 4a58c3d7f7 js/update-index-ignore-removal-for-skip-worktree later to maint).
171
228f5313
JH
172 * "git rev-parse --git-path HEAD.lock" did not give the right path
173 when run in a secondary worktree.
174 (merge 76a53d640f js/git-path-head-dot-lock-fix later to maint).
175
176 * "git merge --no-commit" needs "--no-ff" if you do not want to move
177 HEAD, which has been corrected in the manual page for "git bisect".
178 (merge 8dd327b246 ma/bisect-doc-sample-update later to maint).
179
180 * "git worktree add" internally calls "reset --hard" that should not
181 descend into submodules, even when submodule.recurse configuration
182 is set, but it was affected. This has been corrected.
183 (merge 4782cf2ab6 pb/no-recursive-reset-hard-in-worktree-add later to maint).
184
185 * Messages from die() etc. can be mixed up from multiple processes
186 without even line buffering on Windows, which has been worked
187 around.
188 (merge 116d1fa6c6 js/vreportf-wo-buffering later to maint).
189
190 * HTTP transport had possible allocator/deallocator mismatch, which
191 has been corrected.
192
193 * The watchman integration for fsmonitor was racy, which has been
194 corrected to be more conservative.
195 (merge dd0b61f577 kw/fsmonitor-watchman-fix later to maint).
196
197 * Fetching from multiple remotes into the same repository in parallel
198 had a bad interaction with the recent change to (optionally) update
199 the commit-graph after a fetch job finishes, as these parallel
200 fetches compete with each other. Which has been corrected.
201
202 * Recent update to "git stash pop" made the command empty the index
203 when run with the "--quiet" option, which has been corrected.
204
205 * "git fetch" codepath had a big "do not lazily fetch missing objects
206 when I ask if something exists" switch. This has been corrected by
207 marking the "does this thing exist?" calls with "if not please do not
208 lazily fetch it" flag.
209
210 * Test update to avoid wasted cycles.
211 (merge e0316695ec sg/skip-skipped-prereq later to maint).
212
213 * Error handling after "git push" finishes sending the packdata and
214 waits for the response to the remote side has been improved.
215 (merge ad7a403268 jk/send-pack-remote-failure later to maint).
216
217 * Some codepaths in "gitweb" that forgot to escape URLs generated
218 based on end-user input have been corrected.
219 (merge a376e37b2c jk/gitweb-anti-xss later to maint).
220
083378cc
JH
221 * CI jobs for macOS has been made less chatty when updating perforce
222 package used during testing.
223 (merge 0dbc4a0edf jc/azure-ci-osx-fix-fix later to maint).
224
225 * "git unpack-objects" used to show progress based only on the number
226 of received and unpacked objects, which stalled when it has to
227 handle an unusually large object. It now shows the throughput as
228 well.
229 (merge bae60ba7e9 sg/unpack-progress-throughput later to maint).
230
231 * The sequencer machinery compared the HEAD and the state it is
232 attempting to commit to decide if the result would be a no-op
233 commit, even when amending a commit, which was incorrect, and
234 has been corrected.
235
236 * The code to parse GPG output used to assume incorrectly that the
237 finterprint for the primary key would always be present for a valid
238 signature, which has been corrected.
239 (merge 67a6ea6300 hi/gpg-optional-pkfp-fix later to maint).
240
241 * "git submodule status" and "git submodule status --cached" show
242 different things, but the documentation did not cover them
243 correctly, which has been corrected.
244 (merge 8d483c8408 mg/doc-submodule-status-cached later to maint).
245
246 * "git reset --patch $object" without any pathspec should allow a
247 tree object to be given, but incorrectly required a committish,
248 which has been corrected.
249
250 * "git submodule status" that is run from a subdirectory of the
251 superproject did not work well, which has been corrected.
252 (merge 1f3aea22c7 mg/submodule-status-from-a-subdirectory later to maint).
253
254 * The revision walking machinery uses resources like per-object flag
255 bits that need to be reset before a new iteration of walking
256 begins, but the resources related to topological walk were not
257 cleared correctly, which has been corrected.
258 (merge 0aa0c2b2ec mh/clear-topo-walk-upon-reset later to maint).
259
559c6fc3
JH
260 * TravisCI update.
261 (merge 176441bfb5 sg/osx-force-gcc-9 later to maint).
262
263 * While running "revert" or "cherry-pick --edit" for multiple
264 commits, a recent regression incorrectly detected "nothing to
265 commit, working tree clean", instead of replaying the commits,
266 which has been corrected.
267 (merge befd4f6a81 sg/assume-no-todo-update-in-cherry-pick later to maint).
268
ad05a3d8
JH
269 * Work around a issue where a FD that is left open when spawning a
270 child process and is kept open in the child can interfere with the
271 operation in the parent process on Windows.
272
273 * One kind of progress messages were always given during commit-graph
274 generation, instead of following the "if it takes more than two
275 seconds, show progress" pattern, which has been corrected.
276
b02fd2ac
JH
277 * "git rebase" did not work well when format.useAutoBase
278 configuration variable is set, which has been corrected.
279
280 * The "diff" machinery learned not to lose added/removed blank lines
281 in the context when --ignore-blank-lines and --function-context are
282 used at the same time.
283 (merge 0bb313a552 rs/xdiff-ignore-ws-w-func-context later to maint).
284
285 * The test on "fast-import" used to get stuck when "fast-import" died
286 in the middle.
287 (merge 0d9b0d7885 sg/t9300-robustify later to maint).
288
d9f6f3b6
JH
289 * Other code cleanup, docfix, build fix, etc.
290 (merge 80736d7c5e jc/am-show-current-patch-docfix later to maint).
291 (merge 8b656572ca sg/commit-graph-usage-fix later to maint).
228f5313
JH
292 (merge 6c02042139 mr/clone-dir-exists-to-path-exists later to maint).
293 (merge 44ae131e38 sg/blame-indent-heuristics-is-now-the-default later to maint).
294 (merge 0115e5d929 dl/doc-diff-no-index-implies-exit-code later to maint).
295 (merge 270de6acbe en/t6024-style later to maint).
296 (merge 14c4776d75 ns/test-desc-typofix later to maint).
297 (merge 68d40f30c4 dj/typofix-merge-strat later to maint).
298 (merge f66e0401ab jk/optim-in-pack-idx-conversion later to maint).
299 (merge 169bed7421 rs/parse-options-dup-null-fix later to maint).
300 (merge 51bd6be32d rs/use-copy-array-in-mingw-shell-command-preparation later to maint).
301 (merge b018719927 ma/t7004 later to maint).
302 (merge 932757b0cc ar/install-doc-update-cmds-needing-the-shell later to maint).
083378cc
JH
303 (merge 46efd28be1 ep/guard-kset-tar-headers later to maint).
304 (merge 9e5afdf997 ec/fetch-mark-common-refs-trace2 later to maint).
305 (merge f0e58b3fe8 pb/submodule-update-fetches later to maint).
306 (merge 2a02262078 dl/t5520-cleanup later to maint).
307 (merge a4fb016ba1 js/pkt-line-h-typofix later to maint).
559c6fc3
JH
308 (merge 54a7a64613 rs/simplify-prepare-cmd later to maint).
309 (merge 3eae30e464 jk/lore-is-the-archive later to maint).
310 (merge 14b7664df8 dl/lore-is-the-archive later to maint).
ad05a3d8
JH
311 (merge 0e40a73a4c po/bundle-doc-clonable later to maint).
312 (merge e714b898c6 as/t7812-missing-redirects-fix later to maint).
313 (merge 528d9e6d01 jk/perf-wo-git-dot-pm later to maint).
314 (merge fc42f20e24 sg/test-squelch-noise-in-commit-bulk later to maint).
315 (merge c64368e3a2 bc/t9001-zsh-in-posix-emulation-mode later to maint).
b02fd2ac
JH
316 (merge 11de8dd7ef dr/branch-usage-casefix later to maint).
317 (merge e05e8cf074 rs/archive-zip-code-cleanup later to maint).
318 (merge 147ee35558 rs/commit-export-env-simplify later to maint).
319 (merge 4507ecc771 rs/patch-id-use-oid-to-hex later to maint).