]>
Commit | Line | Data |
---|---|---|
a2082dbd JH |
1 | Git v2.45 Release Notes |
2 | ======================= | |
3 | ||
4 | Backward Compatibility Notes | |
5 | ||
6 | UI, Workflows & Features | |
7 | ||
8 | * Integrate the reftable code into the refs framework as a backend. | |
9 | With "git init --ref-format=reftable", hopefully it would be a lot | |
10 | more efficient to manage a repository with many references. | |
11 | ||
12 | * "git checkout -p" and friends learned that that "@" is a synonym | |
13 | for "HEAD". | |
14 | ||
0f9d4d28 JH |
15 | * Variants of vimdiff learned to honor mergetool.<variant>.layout |
16 | settings. | |
17 | ||
b387623c JH |
18 | * "git reflog" learned a "list" subcommand that enumerates known reflogs. |
19 | ||
43072b4c JH |
20 | * When a merge conflicted at a submodule, merge-ort backend used to |
21 | unconditionally give a lengthy message to suggest how to resolve | |
22 | it. Now the message can be squelched as an advice message. | |
23 | ||
24 | * "git for-each-ref" learned "--include-root-refs" option to show | |
25 | even the stuff outside the 'refs/' hierarchy. | |
26 | ||
e09f1254 JH |
27 | * "git rev-list --missing=print" has learned to optionally take |
28 | "--allow-missing-tips", which allows the objects at the starting | |
29 | points to be missing. | |
30 | ||
31 | * "git merge-tree" has learned that the three trees involved in the | |
32 | 3-way merge only need to be trees, not necessarily commits. | |
33 | ||
34 | * "git log --merge" learned to pay attention to CHERRY_PICK_HEAD and | |
35 | other kinds of *_HEAD pseudorefs. | |
36 | ||
2953d95d JH |
37 | * Platform specific tweaks for OS/390 has been added to |
38 | config.mak.uname. | |
39 | ||
11c821f2 JH |
40 | * Users with safe.bareRepository=explicit can still work from within |
41 | $GIT_DIR of a seconary worktree (which resides at .git/worktrees/$name/) | |
42 | of the primary worktree without explicitly specifying the $GIT_DIR | |
43 | environment variable or the --git-dir=<path> option. | |
44 | ||
45 | * The output format for dates "iso-strict" has been tweaked to show | |
46 | a time in the Zulu timezone with "Z" suffix, instead of "+00:00". | |
47 | ||
d6fd0437 JH |
48 | * "git diff" and friends learned two extra configuration variables, |
49 | diff.srcPrefix and diff.dstPrefix. | |
50 | ||
51 | * The status.showUntrackedFiles configuration variable had a name | |
52 | that tempts users to set a Boolean value expressed in our usual | |
53 | "false", "off", and "0", but it only took "no". This has been | |
54 | corrected so "true" and its synonyms are taken as "normal", while | |
55 | "false" and its synonyms are taken as "no". | |
56 | ||
57 | * Remove an ancient and not well maintained Hg-to-git migration | |
58 | script from contrib/. | |
59 | ||
c2cbfbd2 JH |
60 | * Hints that suggest what to do after resolving conflicts can now be |
61 | squelched by disabling advice.mergeConflict. | |
62 | ||
7774cfed JH |
63 | * Allow git-cherry-pick(1) to automatically drop redundant commits via |
64 | a new `--empty` option, similar to the `--empty` options for | |
65 | git-rebase(1) and git-am(1). Includes a soft deprecation of | |
66 | `--keep-redundant-commits` as well as some related docs changes and | |
67 | sequencer code cleanup. | |
68 | ||
19981dae JH |
69 | * "git config" learned "--comment=<message>" option to leave a |
70 | comment immediately after the "variable = value" on the same line | |
71 | in the configuration file. | |
72 | ||
73 | * core.commentChar used to be limited to a single byte, but has been | |
74 | updated to allow an arbitrary multi-byte sequence. | |
75 | ||
91ec36f2 JH |
76 | * "git add -p" and other "interactive hunk selection" UI has learned to |
77 | skip showing the hunk immediately after it has already been shown, and | |
78 | an additional action to explicitly ask to reshow the current hunk. | |
79 | ||
80 | * "git pack-refs" learned the "--auto" option, which is a useful | |
81 | addition to be triggered from "git gc --auto". | |
a2082dbd JH |
82 | |
83 | Performance, Internal Implementation, Development Support etc. | |
84 | ||
85 | * The code to iterate over refs with the reftable backend has seen | |
86 | some optimization. | |
87 | ||
88 | * More tests that are marked as "ref-files only" have been updated to | |
89 | improve test coverage of reftable backend. | |
90 | ||
0f9d4d28 JH |
91 | * Some parts of command line completion script (in contrib/) have |
92 | been micro-optimized. | |
93 | ||
b387623c JH |
94 | * The way placeholders are to be marked-up in documentation have been |
95 | specified; use "_<placeholder>_" to typeset the word inside a pair | |
96 | of <angle-brakets> emphasized. | |
97 | ||
e09f1254 JH |
98 | * "git --no-lazy-fetch cmd" allows to run "cmd" while disabling lazy |
99 | fetching of objects from the promisor remote, which may be handy | |
100 | for debugging. | |
101 | ||
4f9b731b JH |
102 | * The implementation in "git clean" that makes "-n" and "-i" ignore |
103 | clean.requireForce has been simplified, together with the | |
104 | documentation. | |
105 | ||
106 | * The code to iterate over refs with the reftable backend has seen | |
107 | some optimization. | |
108 | ||
2953d95d JH |
109 | * Uses of xwrite() helper have been audited and updated for better |
110 | error checking and simpler code. | |
111 | ||
3bd955d2 JH |
112 | * Some trace2 events that lacked def_param have learned to show it, |
113 | enriching the output. | |
114 | ||
11c821f2 JH |
115 | * The parse-options code that deals with abbreviated long option |
116 | names have been cleaned up. | |
117 | ||
118 | * The code in reftable backend that creates new table files works | |
119 | better with the tempfile framework to avoid leaving cruft after a | |
120 | failure. | |
121 | ||
122 | * The reftable code has its own custom binary search function whose | |
123 | comparison callback has an unusual interface, which caused the | |
124 | binary search to degenerate into a linear search, which has been | |
125 | corrected. | |
126 | ||
127 | * The code to iterate over reflogs in the reftable has been optimized | |
128 | to reduce memory allocation and deallocation. | |
129 | ||
d6fd0437 JH |
130 | * Work to support a repository that work with both SHA-1 and SHA-256 |
131 | hash algorithms has started. | |
132 | ||
133 | * A new fuzz target that exercises config parsing code has been | |
134 | added. | |
135 | ||
c2cbfbd2 JH |
136 | * Fix the way recently added tests interpolate variables defined |
137 | outside them, and document the best practice to help future | |
138 | developers. | |
139 | ||
7774cfed JH |
140 | * Introduce an experimental protocol for contributors to propose the |
141 | topic description to be used in the "What's cooking" report, the | |
142 | merge commit message for the topic, and in the release notes and | |
143 | document it in the SubmittingPatches document. | |
144 | ||
145 | * The t/README file now gives a hint on running individual tests in | |
146 | the "t/" directory with "make t<num>-*.sh t<num>-*.sh". | |
147 | (merge 8d383806fc pb/test-scripts-are-build-targets later to maint). | |
148 | ||
91ec36f2 JH |
149 | * The "hint:" messages given by the advice mechanism, when given a |
150 | message with a blank line, left a line with trailing whitespace, | |
151 | which has been cleansed. | |
152 | ||
153 | * Documentation rules has been explicitly described how to mark-up | |
154 | literal parts and a few manual pages have been updated as examples. | |
155 | ||
156 | * The .editorconfig file has been taught that a Makefile uses HT | |
157 | indentation. | |
158 | ||
a2082dbd JH |
159 | |
160 | Fixes since v2.44 | |
161 | ----------------- | |
162 | ||
163 | * "git apply" on a filesystem without filemode support have learned | |
164 | to take a hint from what is in the index for the path, even when | |
165 | not working with the "--index" or "--cached" option, when checking | |
166 | the executable bit match what is required by the preimage in the | |
167 | patch. | |
168 | (merge 45b625142d cp/apply-core-filemode later to maint). | |
169 | ||
170 | * "git column" has been taught to reject negative padding value, as | |
171 | it would lead to nonsense behaviour including division by zero. | |
172 | (merge 76fb807faa kh/column-reject-negative-padding later to maint). | |
173 | ||
0f9d4d28 JH |
174 | * "git am --help" now tells readers what actions are available in |
175 | "git am --whitespace=<action>", in addition to saying that the | |
176 | option is passed through to the underlying "git apply". | |
177 | (merge a171dac734 jc/am-whitespace-doc later to maint). | |
178 | ||
179 | * "git tag --column" failed to check the exit status of its "git | |
180 | column" invocation, which has been corrected. | |
181 | (merge 92e66478fc rj/tag-column-fix later to maint). | |
182 | ||
183 | * Credential helper based on libsecret (in contrib/) has been updated | |
184 | to handle an empty password correctly. | |
185 | (merge 8f1f2023b7 mh/libsecret-empty-password-fix later to maint). | |
186 | ||
b387623c JH |
187 | * "git difftool --dir-diff" learned to honor the "--trust-exit-code" |
188 | option; it used to always exit with 0 and signalled success. | |
189 | (merge eb84c8b6ce ps/difftool-dir-diff-exit-code later to maint). | |
190 | ||
43072b4c JH |
191 | * The code incorrectly attempted to use textconv cache when asked, |
192 | even when we are not running in a repository, which has been | |
193 | corrected. | |
194 | (merge affe355fe7 jk/textconv-cache-outside-repo-fix later to maint). | |
195 | ||
196 | * Remove an empty file that shouldn't have been added in the first | |
197 | place. | |
198 | (merge 4f66942215 js/remove-cruft-files later to maint). | |
199 | ||
200 | * The logic to access reflog entries by date and number had ugly | |
201 | corner cases at the boundaries, which have been cleaned up. | |
202 | (merge 5edd126720 jk/reflog-special-cases-fix later to maint). | |
203 | ||
204 | * An error message from "git upload-pack", which responds to "git | |
205 | fetch" requests, had a trialing NUL in it, which has been | |
206 | corrected. | |
207 | (merge 3f4c7a0805 sg/upload-pack-error-message-fix later to maint). | |
208 | ||
209 | * Clarify wording in the CodingGuidelines that requires <git-compat-util.h> | |
210 | to be the first header file. | |
211 | (merge 4e89f0e07c jc/doc-compat-util later to maint). | |
212 | ||
e09f1254 JH |
213 | * "git commit -v --cleanup=scissors" used to add the scissors line |
214 | twice in the log message buffer, which has been corrected. | |
215 | (merge e90cc075cc jt/commit-redundant-scissors-fix later to maint). | |
216 | ||
217 | * A custom remote helper no longer cannot access the newly created | |
218 | repository during "git clone", which is a regression in Git 2.44. | |
219 | This has been corrected. | |
220 | (merge 199f44cb2e ps/remote-helper-repo-initialization-fix later to maint). | |
221 | ||
222 | * Various parts of upload-pack has been updated to bound the resource | |
223 | consumption relative to the size of the repository to protect from | |
224 | abusive clients. | |
225 | (merge 6cd05e768b jk/upload-pack-bounded-resources later to maint). | |
226 | ||
227 | * The upload-pack program, when talking over v2, accepted the | |
228 | packfile-uris protocol extension from the client, even if it did | |
229 | not advertise the capability, which has been corrected. | |
230 | (merge a922bfa3b5 jk/upload-pack-v2-capability-cleanup later to maint). | |
231 | ||
94511502 JH |
232 | * Make sure failure return from merge_bases_many() is properly caught. |
233 | (merge 25fd20eb44 js/merge-base-with-missing-commit later to maint). | |
234 | ||
4f9b731b JH |
235 | * FSMonitor client code was confused when FSEvents were given in a |
236 | different case on a case-insensitive filesystem, which has been | |
237 | corrected. | |
238 | (merge 29c139ce78 jh/fsmonitor-icase-corner-case-fix later to maint). | |
239 | ||
240 | * The "core.commentChar" configuration variable only allows an ASCII | |
241 | character, which was not clearly documented, which has been | |
242 | corrected. | |
243 | (merge fb7c556f58 kh/doc-commentchar-is-a-byte later to maint). | |
244 | ||
245 | * With release 2.44 we got rid of all uses of test_i18ngrep and there | |
246 | is no in-flight topic that adds a new use of it. Make a call to | |
247 | test_i18ngrep a hard failure, so that we can remove it at the end | |
248 | of this release cycle. | |
249 | (merge 381a83dfa3 jc/test-i18ngrep later to maint). | |
250 | ||
251 | * The command line completion script (in contrib/) learned to | |
252 | complete "git reflog" better. | |
253 | (merge 1284f9cc11 rj/complete-reflog later to maint). | |
254 | ||
255 | * The logic to complete the command line arguments to "git worktree" | |
256 | subcommand (in contrib/) has been updated to correctly honor things | |
257 | like "git -C dir" etc. | |
258 | (merge 3574816d98 rj/complete-worktree-paths-fix later to maint). | |
259 | ||
2953d95d JH |
260 | * When git refuses to create a branch because the proposed branch |
261 | name is not a valid refname, an advice message is given to refer | |
262 | the user to exact naming rules. | |
263 | (merge 8fbd903e58 kh/branch-ref-syntax-advice later to maint). | |
264 | ||
3bd955d2 JH |
265 | * Code simplification by getting rid of code that sets an environment |
266 | variable that is no longer used. | |
267 | (merge 72a8d3f027 pw/rebase-i-ignore-cherry-pick-help-environment later to maint). | |
268 | ||
11c821f2 JH |
269 | * The code to find the effective end of log message can fall into an |
270 | endless loop, which has been corrected. | |
271 | (merge 2541cba2d6 fs/find-end-of-log-message-fix later to maint). | |
272 | ||
273 | * Mark-ups used in the documentation has been improved for | |
274 | consistency. | |
275 | (merge 45d5ed3e50 ja/doc-markup-fixes later to maint). | |
276 | ||
277 | * The status.showUntrackedFiles configuration variable was | |
278 | incorrectly documented to accept "false", which has been corrected. | |
279 | ||
c75fd8d8 JH |
280 | * Leaks from "git restore" have been plugged. |
281 | (merge 2f64da0790 rj/restore-plug-leaks later to maint). | |
282 | ||
283 | * "git bugreport --no-suffix" was not supported and instead | |
284 | segfaulted, which has been corrected. | |
285 | (merge b3b57c69da js/bugreport-no-suffix-fix later to maint). | |
286 | ||
287 | * The documentation for "%(trailers[:options])" placeholder in the | |
288 | "--pretty" option of commands in the "git log" family has been | |
289 | updated. | |
290 | (merge bff85a338c bl/doc-key-val-sep-fix later to maint). | |
291 | ||
c2cbfbd2 JH |
292 | * "git checkout --conflict=bad" reported a bad conflictStyle as if it |
293 | were given to a configuration variable; it has been corrected to | |
294 | report that the command line option is bad. | |
295 | (merge 5a99c1ac1a pw/checkout-conflict-errorfix later to maint). | |
296 | ||
297 | * Code clean-up in the "git log" machinery that implements custom log | |
298 | message formatting. | |
299 | (merge 1c10b8e5b0 jk/pretty-subject-cleanup later to maint). | |
300 | ||
301 | * "git config" corrupted literal HT characters written in the | |
302 | configuration file as part of a value, which has been corrected. | |
303 | (merge e6895c3f97 ds/config-internal-whitespace-fix later to maint). | |
304 | ||
305 | * A unit test for reftable code tried to enumerate all files in a | |
306 | directory after reftable operations and expected to see nothing but | |
307 | the files it wanted to leave there, but was fooled by .nfs* cruft | |
308 | files left, which has been corrected. | |
309 | (merge 0068aa7946 ps/reftable-unit-test-nfs-workaround later to maint). | |
310 | ||
7774cfed JH |
311 | * The implementation and documentation of "object-format" option |
312 | exchange between the Git itself and its remote helpers did not | |
313 | quite match, which has been corrected. | |
314 | ||
315 | * The "--pretty=<shortHand>" option of the commands in the "git log" | |
316 | family, defined as "[pretty] shortHand = <expansion>" should have | |
317 | been looked up case insensitively, but was not, which has been | |
318 | corrected. | |
319 | (merge f999d5188b bl/pretty-shorthand-config-fix later to maint). | |
320 | ||
91ec36f2 JH |
321 | * "git apply" failed to extract the filename the patch applied to, |
322 | when the change was about an empty file created in or deleted from | |
323 | a directory whose name ends with a SP, which has been corrected. | |
324 | (merge 776ffd1a30 jc/apply-parse-diff-git-header-names-fix later to maint). | |
325 | ||
326 | * Update a more recent tutorial doc. | |
327 | (merge 95ab557b4b dg/myfirstobjectwalk-updates later to maint). | |
328 | ||
329 | * The test script had an incomplete and ineffective attempt to avoid | |
330 | clobbering the testing user's real crontab (and its equivalents), | |
331 | which has been completed. | |
332 | (merge 73cb87773b es/test-cron-safety later to maint). | |
333 | ||
334 | * Use advice_if_enabled() API to rewrite a simple pattern to | |
335 | call advise() after checking advice_enabled(). | |
336 | (merge 6412d01527 rj/use-adv-if-enabled later to maint). | |
337 | ||
436d4e5b JH |
338 | * Another "set -u" fix for the bash prompt (in contrib/) script. |
339 | (merge d7805bc743 vs/complete-with-set-u-fix later to maint). | |
340 | ||
a2082dbd JH |
341 | * Other code cleanup, docfix, build fix, etc. |
342 | (merge f0e578c69c rs/use-xstrncmpz later to maint). | |
0f9d4d28 JH |
343 | (merge 83e6eb7d7a ba/credential-test-clean-fix later to maint). |
344 | (merge 64562d784d jb/doc-interactive-singlekey-do-not-need-perl later to maint). | |
b387623c JH |
345 | (merge c431a235e2 cp/t9146-use-test-path-helpers later to maint). |
346 | (merge 82d75402d5 ds/doc-send-email-capitalization later to maint). | |
347 | (merge 41bff66e35 jc/doc-add-placeholder-fix later to maint). | |
348 | (merge 6835f0efe9 jw/remote-doc-typofix later to maint). | |
349 | (merge 244001aa20 hs/rebase-not-in-progress later to maint). | |
43072b4c JH |
350 | (merge 2ca6c07db2 jc/no-include-of-compat-util-from-headers later to maint). |
351 | (merge 87bd7fbb9c rs/fetch-simplify-with-starts-with later to maint). | |
352 | (merge f39addd0d9 rs/name-rev-with-mempool later to maint). | |
353 | (merge 9a97b43e03 rs/submodule-prefix-simplify later to maint). | |
354 | (merge 40b8076462 ak/rebase-autosquash later to maint). | |
e09f1254 | 355 | (merge 3223204456 eg/add-uflags later to maint). |
94511502 | 356 | (merge 5f78d52dce es/config-doc-sort-sections later to maint). |
2953d95d | 357 | (merge 781fb7b4c2 as/option-names-in-messages later to maint). |
3bd955d2 | 358 | (merge 51d41dc243 jk/doc-remote-helpers-markup-fix later to maint). |
11c821f2 | 359 | (merge e1aaf309db pb/ci-win-artifact-names-fix later to maint). |
c75fd8d8 JH |
360 | (merge ad538c61da jc/index-pack-fsck-levels later to maint). |
361 | (merge 67471bc704 ja/doc-formatting-fix later to maint). | |
362 | (merge 86f9ce7dd6 bl/doc-config-fixes later to maint). | |
7774cfed JH |
363 | (merge 0d527842b7 az/grep-group-error-message-update later to maint). |
364 | (merge 7c43bdf07b rs/strbuf-expand-bad-format later to maint). | |
436d4e5b | 365 | (merge 8b68b48d5c ds/typofix-core-config-doc later to maint). |