| 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). |