Raw
1 Git v2.53 Release Notes
2 =======================
3
4 UI, Workflows & Features
5 ------------------------
6
7 * "git maintenance" command learned "is-needed" subcommand to tell if
8 it is necessary to perform various maintenance tasks.
9
10 * "git replay" (experimental) learned to perform ref updates itself
11 in a transaction by default, instead of emitting where each refs
12 should point at and leaving the actual update to another command.
13
14 * "git blame" learns "--diff-algorithm=<algo>" option.
15
16 * "git repo info" learned "--all" option.
17
18 * Both "git apply" and "git diff" learn a new whitespace error class,
19 "incomplete-line".
20
21 * Add a new manual that describes the data model.
22
23 * "git fast-import" learns "--signed-commits=strip-if-invalid" option
24 to drop invalid cryptographic signature from objects.
25
26 * The use of "revision" (a connected set of commits) has been
27 clarified in the "git replay" documentation.
28
29 * A help message from "git branch" now mentions "git help" instead of
30 "man" when suggesting to read some documentation.
31
32 * "git repo struct" learned to take "-z" as a synonym to "--format=nul".
33
34 * More object database related information are shown in "git repo
35 structure" output.
36
37 * Improve the error message when a bad argument is given to the
38 `--onto` option of "git replay". Test coverage of "git replay" has
39 been improved.
40
41 * The iconv library on macOS fails to correctly handle stateful
42 ISO/IEC 2022:1994 encoded strings. Work it around instead of
43 replacing it wholesale from homebrew.
44
45 * Upstream symbolic link support on Windows from Git-for-Windows.
46
47
48 Performance, Internal Implementation, Development Support etc.
49 --------------------------------------------------------------
50
51 * The list of packfiles used in a running Git process is moved from
52 the packed_git structure into the packfile store.
53
54 * Some ref backend storage can hold not just the object name of an
55 annotated tag, but the object name of the object the tag points at.
56 The code to handle this information has been streamlined.
57
58 * As "git diff --quiet" only cares about the existence of any
59 changes, disable rename/copy detection to skip more expensive
60 processing whose result will be discarded anyway.
61
62 * A part of code paths that deals with loose objects has been cleaned
63 up.
64
65 * "make strip" has been taught to strip "scalar" as well as "git".
66
67 * Dockerized jobs at the GitHub Actions CI have been taught to show
68 more details of failed tests.
69
70 * Code refactoring around object database sources.
71
72 * Halve the memory consumed by artificial filepairs created during
73 "git diff --find-copies-harder", also making the operation run
74 faster.
75
76 * The "git_istream" abstraction has been revamped to make it easier
77 to interface with pluggable object database design.
78
79 * Rewrite the only use of "mktemp()" that is subject to TOCTOU race
80 and Stop using the insecure "mktemp()" function.
81 (merge 10bba537c4 rs/ban-mktemp later to maint).
82
83 * In-code comment update to clarify that single-letter options are
84 outside of the scope of command line completion script.
85 (merge dc8a00fafe jc/completion-no-single-letter-options later to maint).
86
87 * MEMZERO_ARRAY() helper is introduced to avoid clearing only the
88 first N bytes of an N-element array whose elements are larger than
89 a byte.
90
91 * "git diff-files -R --find-copies-harder" has been taught to use
92 the potential copy sources from the index correctly.
93
94 * Require C99 style flexible array member support from all platforms.
95
96 * The code path that enumerates promisor objects have been optimized
97 to skip pointlessly parsing blob objects.
98
99 * Prepare test suite for Git for Windows that supports symbolic
100 links.
101
102 * Import newer version of "clar", unit testing framework.
103 (merge 84071a6dea ps/clar-integers later to maint).
104
105 * The packfile_store data structure is moved from object store to odb
106 source.
107
108 * The object-info API has been cleaned up.
109
110 * Further preparation to upstream symbolic link support on Windows.
111
112 * Remove implicit reliance on the_repository global in the APIs
113 around tree objects and make it explicit which repository to work
114 in.
115
116 * "git bugreport" and "git version --build-options" learned to
117 include use of 'gettext' feature, to make it easier to diagnose
118 problems around l10n.
119
120 * Dscho observed that SVN tests are taking too much time in CI leak
121 checking tasks, but most time is spent not in our code but in libsvn
122 code (which happen to be written in Perl), whose leaks have little
123 value to discover for us. Skip SVN, P4, and CVS tests in the leak
124 checking tasks.
125 (merge 047bd7dfe3 js/ci-leak-skip-svn later to maint).
126
127
128 Fixes since v2.52
129 -----------------
130
131 * Ever since we added whitespace rules for this project, we misspelt
132 an entry, which has been corrected.
133 (merge 358e94dc70 jc/gitattributes-whitespace-no-indent-fix later to maint).
134
135 * The code to expand attribute macros has been rewritten to avoid
136 recursion to avoid running out of stack space in an uncontrolled
137 way.
138 (merge 42ed046866 jk/attr-macroexpand-wo-recursion later to maint).
139
140 * Adding a repository that uses a different hash function is a no-no,
141 but "git submodule add" did not prevent it, which has been corrected.
142 (merge 6fe288bfbc bc/submodule-force-same-hash later to maint).
143
144 * An earlier check added to osx keychain credential helper to avoid
145 storing the credential itself supplied was overeager and rejected
146 credential material supplied by other helper backends that it would
147 have wanted to store, which has been corrected.
148 (merge 4580bcd235 kn/osxkeychain-idempotent-store-fix later to maint).
149
150 * The "git repo structure" subcommand tried to align its output but
151 mixed up byte count and display column width, which has been
152 corrected.
153 (merge 7a03a10a3a jx/repo-struct-utf8width-fix later to maint).
154
155 * Yet another corner case fix around renames in the "ort" merge
156 strategy.
157 (merge a562d90a35 en/ort-rename-another-fix later to maint).
158
159 * Test leakfix.
160 (merge 14b561e768 jk/test-mktemp-leakfix later to maint).
161
162 * Update a version of action used at the GitHub Actions CI.
163 (merge cd99203f86 js/ci-github-setup-go-update later to maint).
164
165 * The "return errno = EFOO, -1" construct, which is heavily used in
166 compat/mingw.c and triggers warnings under "-Wcomma", has been
167 rewritten to avoid the warnings.
168 (merge af3919816f js/mingw-assign-comma-fix later to maint).
169
170 * Makefile based build have recently been updated to build a
171 libgit.a that also has reftable and xdiff objects; CMake based
172 build procedure has been updated to match.
173 (merge b0d5c88cca js/cmake-libgit-fix later to maint).
174
175 * Under-allocation fix.
176 (merge d22a488482 js/wincred-get-credential-alloc-fix later to maint).
177
178 * "git worktree list" attempts to show paths to worktrees while
179 aligning them, but miscounted display columns for the paths when
180 non-ASCII characters were involved, which has been corrected.
181 (merge 08dfa59835 pw/worktree-list-display-width-fix later to maint).
182
183 * "Windows+meson" job at the GitHub Actions CI was hard to debug, as
184 it did not show and save failed test artifacts, which has been
185 corrected.
186 (merge 17bd1108ea jk/ci-windows-meson-test-fix later to maint).
187
188 * Emulation code clean-up.
189 (merge 2367c6bcd6 gf/win32-pthread-cond-wait-err later to maint).
190
191 * Various issues detected by Asan have been corrected.
192 (merge a031b6181a jk/asan-bonanza later to maint).
193
194 * "git config get --path" segfaulted on an ":(optional)path" that
195 does not exist, which has been corrected.
196 (merge 0bd16856ff jc/optional-path later to maint).
197
198 * The "--committer-date-is-author-date" option of "git am/rebase" is
199 a misguided one. The documentation is updated to discourage its
200 use.
201 (merge fbf3d0669f kh/doc-committer-date-is-author-date later to maint).
202
203 * The option help text given by "git config unset -h" described
204 the "--all" option to "replace", not "unset", multiple variables,
205 which has been corrected.
206 (merge 18bf67b753 rs/config-unset-opthelp-fix later to maint).
207
208 * The error message given by "git config set", when the variable
209 being updated has more than one values defined, used old style "git
210 config" syntax with an incorrect option in its hint, both of which
211 have been corrected.
212 (merge df963f0df4 rs/config-set-multi-error-message-fix later to maint).
213
214 * "git replay" forgot to omit the "gpgsig-sha256" extended header
215 from the resulting commit the same way it omits "gpgsig", which has
216 been corrected.
217 (merge 9f3a115087 pw/replay-exclude-gpgsig-fix later to maint).
218
219 * A few tests have been updated to work under the shell compatible
220 mode of zsh.
221 (merge a92f243a94 bc/zsh-testsuite later to maint).
222
223 * The way patience diff finds LCS has been optimized.
224 (merge c7e3b8085b yc/xdiff-patience-optim later to maint).
225
226 * Recent optimization to "last-modified" command introduced use of
227 uninitialized block of memory, which has been corrected.
228 (merge fe4e60759b tc/last-modified-active-paths-optimization later to maint).
229
230 * "git last-modified" used to mishandle "--" to mark the beginning of
231 pathspec, which has been corrected.
232 (merge 05491b90ce js/last-modified-with-sparse-checkouts later to maint).
233
234 * Emulation code clean-up.
235 (merge 42aa7603aa gf/win32-pthread-cond-init later to maint).
236
237 * "git submodule add" to add a submodule under <name> segfaulted,
238 when a submodule.<name>.something is already in .gitmodules file
239 without defining where its submodule.<name>.path is, which has been
240 corrected.
241 (merge dd8e8c786e jc/submodule-add later to maint).
242
243 * "git fetch" that involves fetching tags, when a tag being fetched
244 needs to overwrite existing one, failed to fetch other tags, which
245 has been corrected.
246 (merge b7b17ec8a6 kn/fix-fetch-backfill-tag-with-batched-ref-updates later to maint).
247
248 * Document "rev-list --filter-provided-objects" better.
249 (merge 6d8dc99478 jt/doc-rev-list-filter-provided-objects later to maint).
250
251 * Even when there is no changes in the packfile and no need to
252 recompute bitmaps, "git repack" recomputed and updated the MIDX
253 file, which has been corrected.
254 (merge 6ce9d558ce ps/repack-avoid-noop-midx-rewrite later to maint).
255
256 * Update HTTP tests to adjust for changes in curl 8.18.0
257 (merge 17f4b01da7 jk/test-curl-updates later to maint).
258
259 * Workaround the "iconv" shipped as part of macOS, which is broken
260 handling stateful ISO/IEC 2022 encoded strings.
261 (merge cee341e9dd rs/macos-iconv-workaround later to maint).
262
263 * Running "git diff" with "--name-only" and other options that allows
264 us not to look at the blob contents, while objects that are lazily
265 fetched from a promisor remote, caused use-after-free, which has
266 been corrected.
267
268 * The ort merge machinery hit an assertion failure in a history with
269 criss-cross merges renamed a directory and a non-directory, which
270 has been corrected.
271 (merge 979ee83e8a en/ort-recursive-d-f-conflict-fix later to maint).
272
273 * Diagnose invalid bundle-URI that lack the URI entry, instead of
274 crashing.
275 (merge 7796c14a1a sb/bundle-uri-without-uri later to maint).
276
277 * Mailmap update for Karsten
278 (merge e97678c4ef js/mailmap-karsten-blees later to maint).
279
280 * Perf-test fixes.
281 (merge 79d301c767 jk/t-perf-fixes later to maint).
282
283 * Fix for a performance regression in "git cat-file".
284 (merge 9e8b448dd8 jk/cat-file-avoid-bitmap-when-unneeded later to maint).
285
286 * Update a FAQ entry on synching two separate repositories using the
287 "git stash export/import" recently introduced.
288 (merge 02fc44a989 bc/doc-stash-import-export later to maint).
289
290 * "git fsck" used inconsistent set of refs to show a confused
291 warning, which has been corrected.
292
293 * Some error messages from the http transport layer lacked the
294 terminating newline, which has been corrected.
295 (merge a8227ae8d5 kt/http-backend-errors later to maint).
296
297 * "git repack --geometric" did not work with promisor packs, which
298 has been corrected.
299
300 * The logic that avoids reusing MIDX files with a wrong checksum was
301 broken, which has been corrected.
302
303 * Other code cleanup, docfix, build fix, etc.
304 (merge 46207a54cc qj/doc-http-bad-want-response later to maint).
305 (merge df90eccd93 kh/doc-commit-extra-references later to maint).
306 (merge f18aa68861 rs/xmkstemp-simplify later to maint).
307 (merge fddba8f737 ja/doc-synopsis-style later to maint).
308 (merge 22ce0cb639 en/xdiff-cleanup-2 later to maint).
309 (merge 8ef7355a8f je/doc-pull later to maint).
310 (merge 48176f953f jc/capability-leak later to maint).
311 (merge 8cbbdc92f7 kh/doc-pre-commit-fix later to maint).
312 (merge d4bc39a4d9 mh/doc-config-gui-gcwarning later to maint).
313 (merge 41d425008a kh/doc-send-email-paragraph-fix later to maint).
314 (merge d4b732899e jc/macports-darwinports later to maint).
315 (merge bab391761d kj/pull-options-decl-cleanup later to maint).
316 (merge 007b8994d4 rs/t4014-git-version-string-fix later to maint).
317 (merge 4ce170c522 ds/doc-scalar-config later to maint).
318 (merge a0c813951a jc/doc-commit-signoff-config later to maint).
319 (merge 8ee262985a ja/doc-misc-fixes later to maint).
320 (merge 1722c2244b mh/doc-core-attributesfile later to maint).
321 (merge c469ca26c5 dk/ci-rust-fix later to maint).
322 (merge 12f0be0857 gf/clear-path-cache-cleanup later to maint).
323 (merge 949df6ed6b js/test-func-comment-fix later to maint).
324 (merge 93f894c001 bc/checkout-error-message-fix later to maint).
325 (merge abf05d856f rs/show-branch-prio-queue later to maint).
326 (merge 06188ea5f3 rs/parse-config-expiry-simplify later to maint).
327 (merge 861dbb1586 dd/t5403-modernise later to maint).
328 (merge acffc5e9e5 ja/doc-synopsis-style-more later to maint).
329 (merge 6c5c7e7071 ac/t1420-use-more-direct-check later to maint).
330 (merge 2ac93bfcbc ds/builtin-doc-update later to maint).
331 (merge 3f051fc9c9 kh/doc-patch-id later to maint).
332 (merge 555c8464e5 je/doc-reset later to maint).
333 (merge 220f888d7e ps/t1410-cleanup later to maint).
334 (merge 5814b04c02 ps/config-doc-get-urlmatch-fix later to maint).
335 (merge 5ae594f30b sb/doc-update-ref-markup-fix later to maint).
336 (merge bc8556d066 ty/t1005-test-path-is-helpers later to maint).