]>
Commit | Line | Data |
---|---|---|
95026463 JH |
1 | Git v2.41 Release Notes |
2 | ======================= | |
3 | ||
4 | UI, Workflows & Features | |
5 | ||
004e0f79 | 6 | * Allow information carried on the WWW-Authenticate header to be |
95026463 JH |
7 | passed to the credential helpers. |
8 | ||
9 | * A new "fetch.hideRefs" option can be used to exclude specified refs | |
10 | from "rev-list --objects --stdin --not --all" traversal for | |
11 | checking object connectivity, most useful when there are many | |
12 | unrelated histories in a single repository. | |
13 | ||
e25cabbf JH |
14 | * "git push" has been taught to allow deletion of refs with one-level |
15 | names to help repairing a repository who acquired such a ref by | |
16 | mistake. In general, we don't encourage use of such a ref, and | |
17 | creation or update to such a ref is rejected as before. | |
18 | ||
19 | * Allow "git bisect reset" to check out the original branch when the | |
20 | branch is already checked out in a different worktree linked to the | |
21 | same repository. | |
22 | ||
23 | * A few subcommands have been taught to stop users from working on a | |
24 | branch that is being used in another worktree linked to the same | |
25 | repository. | |
26 | ||
27 | * "git format-patch" learned to write a log-message only output file | |
28 | for empty commits. | |
29 | ||
27d43aaa JH |
30 | * "git format-patch" honors the src/dst prefixes set to nonstandard |
31 | values with configuration variables like "diff.noprefix", causing | |
32 | receiving end of the patch that expects the standard -p1 format to | |
33 | break. "format-patch" has been taught to ignore end-user configuration | |
34 | and always use the standard prefixes. | |
35 | ||
36 | This is a backward compatibility breaking change. | |
37 | ||
8d90352a JH |
38 | * Lift the limitation that colored prompts can only be used with |
39 | PROMPT_COMMAND mode. | |
40 | ||
ae73b2c8 JH |
41 | * "git blame --contents=<file> <rev> -- <path>" used to be forbidden, |
42 | but now it finds the origins of lines starting at <file> contents | |
43 | through the history that leads to <rev>. | |
44 | ||
45 | * "git pack-redundant" gave a warning when run, as the command has | |
46 | outlived its usefulness long ago and is nominated for future | |
47 | removal. Now we escalate to give an error. | |
95026463 | 48 | |
9857273b JH |
49 | * "git clone" from an empty repository learned to propagate the |
50 | choice of the hash algorithm from the source repository to the | |
4a714b37 | 51 | newly created repository over any one of the v0/v1/v2 protocol. |
9857273b | 52 | |
667fcf4e JH |
53 | * "git mergetool" and "git difftool" learns a new configuration |
54 | guiDefault to optionally favor configured guitool over non-gui-tool | |
55 | automatically when $DISPLAY is set. | |
56 | ||
57 | * "git branch -d origin/master" would say "no such branch", but it is | |
58 | likely a missed "-r" if refs/remotes/origin/master exists. The | |
59 | command has been taught to give such a hint in its error message. | |
60 | ||
61 | * Clean-up of the code path that deals with merge strategy option | |
62 | handling in "git rebase". | |
63 | ||
9c6990cc JH |
64 | * "git clone --local" stops copying from an original repository that |
65 | has symbolic links inside its $GIT_DIR; an error message when that | |
66 | happens has been updated. | |
67 | ||
79bdd487 JH |
68 | * The "--format=..." option of "git for-each-ref", "git branch", and |
69 | "git tag" commands learn "--omit-empty" to hide refs whose | |
70 | formatting results in an empty string from the output. | |
7580f92f | 71 | |
2807bd2c JH |
72 | * The sendemail-validate validate hook learned to pass the total |
73 | number of input files and where in the sequence each invocation is | |
74 | via environment variables. | |
75 | ||
48d89b51 JH |
76 | * When "gc" needs to retain unreachable objects, packing them into |
77 | cruft packs (instead of exploding them into loose object files) has | |
78 | been offered as a more efficient option for some time. Now the use | |
79 | of cruft packs has been made the default and no longer considered | |
80 | an experimental feature. | |
81 | ||
69c78663 JH |
82 | * The output given by "git blame" that attributes a line to contents |
83 | taken from the file specified by the "--contents" option shows it | |
84 | differently from a line attributed to the working tree file. | |
85 | ||
91428f07 JH |
86 | * "git send-email" learned to give the e-mail headers to the validate |
87 | hook by passing an extra argument from the command line. | |
88 | ||
89 | * The credential subsystem learns to help OAuth framework. | |
90 | ||
91 | * The titles of manual pages used to be chomped at an unreasonably | |
92 | short limit, which has been removed. | |
93 | ||
0df2c180 JH |
94 | * Error messages given when working on an unborn branch that is |
95 | checked out in another worktree have been improved. | |
96 | ||
97 | * The documentation was misleading about the interaction between | |
98 | GIT_DEFAULT_HASH and "git clone", which has been clarified to | |
99 | stress that the variable is to be ignored by the command. | |
100 | ||
101 | * "git send-email" learned "--header-cmd=<cmd>" that can inject | |
102 | arbitrary e-mail header lines to the outgoing messages. | |
103 | ||
104 | * "git fsck" learned to detect bit-flip breakages in the reachability | |
105 | bitmap files. | |
106 | ||
107 | * The "--stdin" option of "git name-rev" has been replaced with | |
108 | the "--annotate-stdin" option more than a year ago. We stop | |
109 | advertising it in the "git name-rev -h" output. | |
110 | ||
111 | * "git push --all" gained an alias "git push --branches". | |
112 | ||
113 | * "git fetch" learned the "--porcelain" option that emits what it did | |
114 | in a machine-parseable format. | |
115 | ||
004e0f79 JH |
116 | * "git --attr-source=<tree> cmd $args" is a new way to have any |
117 | command to read attributes not from the working tree but from the | |
118 | given tree object. | |
119 | ||
9857273b | 120 | |
95026463 JH |
121 | Performance, Internal Implementation, Development Support etc. |
122 | ||
123 | * Code clean-up to clarify directory traversal API. | |
124 | ||
125 | * Code clean-up to clarify the rule that "git-compat-util.h" must be | |
126 | the first to be included. | |
127 | ||
128 | * More work towards -Wunused. | |
129 | ||
130 | * Instead of forcing each command to choose to honor GPG related | |
131 | configuration variables, make the subsystem lazily initialize | |
132 | itself. | |
133 | ||
8d90352a JH |
134 | * Remove workaround for ancient versions of DocBook to make it work |
135 | correctly with groff, which has not been necessary since docbook | |
136 | 1.76 from 2010. | |
137 | ||
6369acd9 JH |
138 | * Code clean-up to include and/or uninclude parse-options.h file as |
139 | needed. | |
140 | ||
0607f793 JH |
141 | * The code path that reports what "git fetch" did to each ref has |
142 | been cleaned up. | |
143 | ||
144 | * Assorted config API updates. | |
145 | ||
146 | * A few configuration variables to tell the cURL library that | |
147 | different types of ssl-cert and ssl-key are in use have been added. | |
148 | ||
149 | * Split key function and data structure definitions out of cache.h to | |
150 | new header files and adjust the users. | |
151 | ||
152 | * "git fetch --all" does not have to download and handle the same | |
153 | bundleURI over and over, which has been corrected. | |
154 | ||
9857273b JH |
155 | * "git sparse-checkout" command learns a debugging aid for the sparse |
156 | rule definitions. | |
157 | ||
667fcf4e JH |
158 | * "git write-tree" learns to work better with sparse-index. |
159 | ||
f85cd430 JH |
160 | * The on-disk reverse index that allows mapping from the pack offset |
161 | to the object name for the object stored at the offset has been | |
162 | enabled by default. | |
163 | ||
164 | * "git fsck" learned to validate the on-disk pack reverse index files. | |
667fcf4e | 165 | |
69c78663 JH |
166 | * strtok() and strtok_r() are banned in this codebase. |
167 | ||
5597cfdf JH |
168 | * The detect-compilers script to help auto-tweaking the build system |
169 | had trouble working with compilers whose version number has extra | |
170 | suffixes. The script has been taught that certain suffixes (like | |
171 | "-win32" in "gcc 10-win32") can be safely stripped as they share | |
172 | the same features and bugs with the version without the suffix. | |
173 | ||
91428f07 JH |
174 | * ctype tests have been taught to test EOF, too. |
175 | ||
176 | * The implementation of credential helpers used fgets() over fixed | |
177 | size buffers to read protocol messages, causing the remainder of | |
178 | the folded long line to trigger unexpected behaviour, which has | |
179 | been corrected. | |
180 | ||
181 | * The implementation of the default "negotiator", used to find common | |
182 | ancestor over the network for object tranfer, used to be recursive; | |
183 | it was updated to be iterative to conserve stackspace usage. | |
184 | ||
185 | * Our custom callout formatter is no longer used in the documentation | |
186 | formatting toolchain, as the upstream default ones give better | |
187 | output these days. | |
188 | ||
0df2c180 JH |
189 | * The tracing mechanism learned to notice and report when |
190 | auto-discovered bare repositories are being used, as allowing so | |
191 | without explicitly stating the user intends to do so (with setting | |
192 | GIT_DIR for example) can be used with social engineering as an | |
193 | attack vector. | |
194 | ||
195 | * "git diff-files" learned not to expand sparse-index unless needed. | |
196 | ||
95026463 JH |
197 | |
198 | Fixes since v2.40 | |
199 | ----------------- | |
200 | ||
201 | * "git fsck" learned to check the index files in other worktrees, | |
202 | just like "git gc" honors them as anchoring points. | |
203 | (merge 8d3e7eac52 jk/fsck-indices-in-worktrees later to maint). | |
204 | ||
e25cabbf JH |
205 | * Fix a segfaulting loop. The function and its caller may need |
206 | further clean-up. | |
207 | (merge c5773dc078 ew/commit-reach-clean-up-flags-fix later to maint). | |
208 | ||
209 | * "git restore" supports options like "--ours" that are only | |
210 | meaningful during a conflicted merge, but these options are only | |
211 | meaningful when updating the working tree files. These options are | |
212 | marked to be incompatible when both "--staged" and "--worktree" are | |
213 | in effect. | |
214 | (merge ee8a88826a ak/restore-both-incompatible-with-conflicts later to maint). | |
215 | ||
216 | * Simplify UI to control progress meter given by "git bundle" command. | |
217 | (merge 8b95521edb jk/bundle-progress later to maint). | |
218 | ||
219 | * "git bundle" learned that "-" is a common way to say that the input | |
220 | comes from the standard input and/or the output goes to the | |
221 | standard output. It used to work only for output and only from the | |
222 | root level of the working tree. | |
223 | (merge 0bbe10313e jk/bundle-use-dash-for-stdfiles later to maint). | |
224 | ||
225 | * Once we start running, we assumed that the list of alternate object | |
226 | databases would never change. Hook into the machinery used to | |
227 | update the list of packfiles during runtime to update this list as | |
228 | well. | |
229 | (merge e2d003dbed ds/reprepare-alternates-when-repreparing-packfiles later to maint). | |
230 | ||
231 | * The code to parse "git rebase -X<opt>" was not prepared to see an | |
232 | unparsable option string, which has been corrected. | |
233 | (merge 15a4cc912e ab/fix-strategy-opts-parsing later to maint). | |
234 | ||
235 | * "git add -p" while the index is unmerged sometimes failed to parse | |
236 | the diff output it internally produces and died, which has been | |
237 | corrected. | |
238 | (merge 28d1122f9c jk/add-p-unmerged-fix later to maint). | |
239 | ||
27d43aaa JH |
240 | * Fix for a "ls-files --format="%(path)" that produced nonsense |
241 | output, which was a bug in 2.38. | |
242 | (merge cfb62dd006 aj/ls-files-format-fix later to maint). | |
243 | ||
244 | * "git receive-pack" that responds to "git push" requests failed to | |
245 | clean a stale lockfile when killed in the middle, which has been | |
246 | corrected. | |
247 | (merge c55c30669c ps/receive-pack-unlock-before-die later to maint). | |
248 | ||
8d90352a JH |
249 | * "git rev-parse --quiet foo@{u}", or anything that asks @{u} to be |
250 | parsed with GET_OID_QUIETLY option, did not quietly fail, which has | |
251 | been corrected. | |
252 | (merge dfbfdc521d fc/oid-quietly-parse-upstream later to maint). | |
253 | ||
254 | * Transports that do not support protocol v2 did not correctly fall | |
255 | back to protocol v0 under certain conditions, which has been | |
256 | corrected. | |
257 | (merge eaa0fd6584 jk/fix-proto-downgrade-to-v0 later to maint). | |
258 | ||
259 | * time(2) on glib 2.31+, especially on Linux, goes out of sync with | |
260 | higher resolution timers used for gettimeofday(2) and by the | |
261 | filesystem. Replace all calls to it with a git_time() wrapper and | |
262 | (merge 370ddcbc89 pe/time-use-gettimeofday later to maint). | |
263 | ||
6369acd9 JH |
264 | * Code clean-up to use designated initializers in parse-options API. |
265 | (merge 353e6d4554 sg/parse-options-h-initializers later to maint). | |
266 | ||
267 | * A recent-ish change to allow unicode character classes to be used | |
268 | with "grep -P" triggered a JIT bug in older pcre2 libraries. | |
269 | The problematic change in Git built with these older libraries has | |
270 | been disabled to work around the bug. | |
271 | (merge 14b9a04479 mk/workaround-pcre-jit-ucp-bug later to maint). | |
272 | ||
ae73b2c8 JH |
273 | * The wildmatch library code unlearns exponential behaviour it |
274 | acquired some time ago since it was borrowed from rsync. | |
275 | (merge 3dc0b7f0dc pw/wildmatch-fixes later to maint). | |
276 | ||
277 | * The index files can become corrupt under certain conditions when | |
278 | the split-index feature is in use, especially together with | |
279 | fsmonitor, which have been corrected. | |
280 | (merge 061dd722dc js/split-index-fixes later to maint). | |
281 | ||
282 | * Document what the pathname-looking strings in "rev-list --object" | |
283 | output are for and what they mean. | |
284 | (merge 15364d2a3c jk/document-rev-list-object-name later to maint). | |
285 | ||
0607f793 JH |
286 | * Fix unnecessary truncation of generation numbers used in-core. |
287 | (merge d3af1c193d ps/ahead-behind-truncation-fix later to maint). | |
288 | ||
289 | * Code clean-up around the use of the_repository. | |
290 | (merge 4a93b899c1 ab/remove-implicit-use-of-the-repository later to maint). | |
291 | ||
9857273b JH |
292 | * Consistently spell "Message-ID" as such, not "Message-Id". |
293 | (merge ba4324c4e1 jc/spell-id-in-both-caps-in-message-id later to maint). | |
294 | ||
295 | * Correct use of an uninitialized structure member. | |
296 | (merge dc12ee77ab jx/cap-object-info-uninitialized-fix later to maint). | |
297 | ||
298 | * Tests had a few places where we ignored PERL_PATH and blindly used | |
299 | /usr/bin/perl, which have been corrected. | |
300 | (merge c1917156a0 jk/use-perl-path-consistently later to maint). | |
301 | ||
667fcf4e JH |
302 | * Documentation mark-up fix. |
303 | (merge 78b6369e67 la/mfc-markup-fix later to maint). | |
304 | ||
305 | * Doc toolchain update to remove old workaround for AsciiDoc. | |
306 | (merge 8806120de6 fc/remove-header-workarounds-for-asciidoc later to maint). | |
307 | ||
9c6990cc JH |
308 | * The userdiff regexp patterns for various filetypes that are built |
309 | into the system have been updated to avoid triggering regexp errors | |
310 | from UTF-8 aware regex engines. | |
311 | (merge be39144954 rs/userdiff-multibyte-regex later to maint). | |
312 | ||
313 | * The approxidate() API has been simplified by losing an extra | |
314 | function that did the same thing as another one. | |
315 | (merge 8a7f0b666f rs/remove-approxidate-relative later to maint). | |
316 | ||
317 | * Code clean-up to replace a hardcoded constant with a CPP macro. | |
318 | (merge c870de6502 rs/get-tar-commit-id-use-defined-const later to maint). | |
319 | ||
7580f92f JH |
320 | * Doc build simplification. |
321 | (merge 9a09ed3229 fc/doc-stop-using-manversion later to maint). | |
322 | ||
323 | * "git archive" run from a subdirectory mishandled attributes and | |
324 | paths outside the current directory. | |
325 | (merge 92b1dd1b9e rs/archive-from-subdirectory-fixes later to maint). | |
326 | ||
2807bd2c JH |
327 | * The code to parse capability list for v0 on-wire protocol fell into |
328 | an infinite loop when a capability appears multiple times, which | |
329 | has been corrected. | |
330 | ||
331 | * Geometric repacking ("git repack --geometric=<n>") in a repository | |
332 | that borrows from an alternate object database had various corner | |
333 | case bugs, which have been corrected. | |
334 | (merge d85cd18777 ps/fix-geom-repack-with-alternates later to maint). | |
335 | ||
48d89b51 JH |
336 | * The "%GT" placeholder for the "--format" option of "git log" and |
337 | friends caused BUG() to trigger on a commit signed with an unknown | |
338 | key, which has been corrected. | |
339 | (merge 7891e46585 jk/gpg-trust-level-fix later to maint). | |
340 | ||
69c78663 JH |
341 | * The completion script used to use bare "read" without the "-r" |
342 | option to read the contents of various state files, which risked | |
343 | getting confused with backslashes in them. This has been | |
344 | corrected. | |
345 | (merge 197152098a ek/completion-use-read-r-to-read-literally later to maint). | |
346 | ||
347 | * A small API fix to the ort merge strategy backend. | |
348 | (merge 000c4ceca7 en/ort-finalize-after-0-merges-fix later to maint). | |
349 | ||
5597cfdf JH |
350 | * The commit object parser has been taught to be a bit more lenient |
351 | to parse timestamps on the author/committer line with a malformed | |
352 | author/committer ident. | |
353 | (merge 90ef0f14eb jk/parse-commit-with-malformed-ident later to maint). | |
354 | ||
355 | * Retitle a test script with an overly narrow name. | |
356 | (merge 8bb19c14fb ob/t3501-retitle later to maint). | |
357 | ||
91428f07 JH |
358 | * Doc update to clarify how text and eol attributes interact to |
359 | specify the end-of-line conversion. | |
360 | (merge 6696077ace ah/doc-attributes-text later to maint). | |
361 | ||
0df2c180 JH |
362 | * Gitk updates from GfW project. |
363 | (merge 99e70f3077 js/gitk-fixes-from-gfw later to maint). | |
364 | ||
365 | * "git diff --dirstat" leaked memory, which has been plugged. | |
366 | (merge 83973981eb jc/dirstat-plug-leaks later to maint). | |
367 | ||
368 | * "git merge-tree" reads the basic configuration, which can be used | |
369 | by git forges to disable replace-refs feature. | |
370 | (merge b6551feadf ds/merge-tree-use-config later to maint). | |
371 | ||
9e49351c JH |
372 | * A few bugs in the sequencer machinery that results in miscounting |
373 | the steps have been corrected. | |
374 | (merge 170eea9750 js/rebase-count-fixes later to maint). | |
375 | ||
95026463 | 376 | * Other code cleanup, docfix, build fix, etc. |
e25cabbf | 377 | (merge f7111175df as/doc-markup-fix later to maint). |
27d43aaa | 378 | (merge 90ff7c9898 fc/test-aggregation-clean-up later to maint). |
6369acd9 | 379 | (merge 9b0c7f308a jc/am-doc-refer-to-format-patch later to maint). |
140b9478 JH |
380 | (merge b10cbdac4c bb/unicode-width-table-15 later to maint). |
381 | (merge 3457b50e8c ab/retire-scripted-add-p later to maint). | |
382 | (merge d52fcf493b ds/p2000-fix-grep-sparse later to maint). | |
383 | (merge ec063d2591 ss/hashmap-typofix later to maint). | |
ae73b2c8 JH |
384 | (merge 1aaed69d11 rs/archive-mtime later to maint). |
385 | (merge 2da2cc9b28 ob/rollback-after-commit-lock-failure later to maint). | |
386 | (merge 54dbd0933b ob/sequencer-save-head-simplify later to maint). | |
387 | (merge a93cbe8d78 ar/test-cleanup-unused-file-creation later to maint). | |
0607f793 JH |
388 | (merge cc48ddd937 jk/chainlint-fixes later to maint). |
389 | (merge 4833b08426 ow/ref-format-remove-unused-member later to maint). | |
9857273b | 390 | (merge d0ea2ca1cf dw/doc-submittingpatches-grammofix later to maint). |
9c6990cc | 391 | (merge fd72637423 ar/t2024-checkout-output-fix later to maint). |
5597cfdf JH |
392 | (merge d45cbe3fe0 ob/sequencer-i18n-fix later to maint). |
393 | (merge b734fe49fd ob/messages-capitalize-exception later to maint). | |
91428f07 JH |
394 | (merge ad353d7e77 ma/gittutorial-fixes later to maint). |
395 | (merge a5855fd8d4 ar/test-cleanup-unused-file-creation-part2 later to maint). | |
396 | (merge 0c5308af30 sd/doc-gitignore-and-rm-cached later to maint). | |
0df2c180 JH |
397 | (merge cbb83daeaf kh/doc-interpret-trailers-updates later to maint). |
398 | (merge 3d77fbb664 ar/config-count-tests-updates later to maint). | |
399 | (merge b7cf25c8f4 jc/t9800-fix-use-of-show-s-raw later to maint). |