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