| 1 | Git 2.33 Release Notes |
| 2 | ====================== |
| 3 | |
| 4 | Updates since Git 2.32 |
| 5 | ---------------------- |
| 6 | |
| 7 | UI, Workflows & Features |
| 8 | |
| 9 | * "git send-email" learned the "--sendmail-cmd" command line option |
| 10 | and the "sendemail.sendmailCmd" configuration variable, which is a |
| 11 | more sensible approach than the current way of repurposing the |
| 12 | "smtp-server" that is meant to name the server to instead name the |
| 13 | command to talk to the server. |
| 14 | |
| 15 | * The userdiff pattern for C# learned the token "record". |
| 16 | |
| 17 | * "git rev-list" learns to omit the "commit <object-name>" header |
| 18 | lines from the output with the `--no-commit-header` option. |
| 19 | |
| 20 | * "git worktree add --lock" learned to record why the worktree is |
| 21 | locked with a custom message. |
| 22 | |
| 23 | |
| 24 | Performance, Internal Implementation, Development Support etc. |
| 25 | |
| 26 | * The code to handle the "--format" option in "for-each-ref" and |
| 27 | friends made too many string comparisons on %(atom)s used in the |
| 28 | format string, which has been corrected by converting them into |
| 29 | enum when the format string is parsed. |
| 30 | |
| 31 | * Use the hashfile API in the codepath that writes the index file to |
| 32 | reduce code duplication. |
| 33 | |
| 34 | * Repeated rename detections in a sequence of mergy operations have |
| 35 | been optimized out for the 'ort' merge strategy. |
| 36 | |
| 37 | * Preliminary clean-up of tests before the main reftable changes |
| 38 | hits the codebase. |
| 39 | |
| 40 | * The backend for "diff -G/-S" has been updated to use pcre2 engine |
| 41 | when available. |
| 42 | |
| 43 | * Use ".DELETE_ON_ERROR" pseudo target to simplify our Makefile. |
| 44 | |
| 45 | * Code cleanup around struct_type_init() functions. |
| 46 | |
| 47 | * "git send-email" optimization. |
| 48 | |
| 49 | * GitHub Actions / CI update. |
| 50 | (merge 0dc787a9f2 js/ci-windows-update later to maint). |
| 51 | |
| 52 | * Object accesses in repositories with many alternate object store |
| 53 | have been optimized. |
| 54 | |
| 55 | * "git log" has been optimized not to waste cycles to load ref |
| 56 | decoration data that may not be needed. |
| 57 | |
| 58 | * Many "printf"-like helper functions we have have been annotated |
| 59 | with __attribute__() to catch placeholder/parameter mismatches. |
| 60 | |
| 61 | * Tests that cover protocol bits have been updated and helpers |
| 62 | used there have been consolidated. |
| 63 | |
| 64 | * The CI gained a new job to run "make sparse" check. |
| 65 | |
| 66 | * "git status" codepath learned to work with sparsely populated index |
| 67 | without hydrating it fully. |
| 68 | |
| 69 | * A guideline for gender neutral documentation has been added. |
| 70 | |
| 71 | * Documentation on "git diff -l<n>" and diff.renameLimit have been |
| 72 | updated, and the defaults for these limits have been raised. |
| 73 | |
| 74 | * The completion support used to offer alternate spelling of options |
| 75 | that exist only for compatibility, which has been corrected. |
| 76 | |
| 77 | * "TEST_OUTPUT_DIRECTORY=there make test" failed to work, which has |
| 78 | been corrected. |
| 79 | |
| 80 | * "git bundle" gained more test coverage. |
| 81 | |
| 82 | * "git read-tree" had a codepath where blobs are fetched one-by-one |
| 83 | from the promisor remote, which has been corrected to fetch in bulk. |
| 84 | |
| 85 | * Rewrite of "git submodule" in C continues. |
| 86 | |
| 87 | * "git checkout" and "git commit" learn to work without unnecessarily |
| 88 | expanding sparse indexes. |
| 89 | |
| 90 | |
| 91 | Fixes since v2.32 |
| 92 | ----------------- |
| 93 | |
| 94 | * We historically rejected a very short string as an author name |
| 95 | while accepting a patch e-mail, which has been loosened. |
| 96 | (merge 72ee47ceeb ef/mailinfo-short-name later to maint). |
| 97 | |
| 98 | * The parallel checkout codepath did not initialize object ID field |
| 99 | used to talk to the worker processes in a futureproof way. |
| 100 | |
| 101 | * Rewrite code that triggers undefined behaviour warning. |
| 102 | (merge aafa5df0df jn/size-t-casted-to-off-t-fix later to maint). |
| 103 | |
| 104 | * The description of "fast-forward" in the glossary has been updated. |
| 105 | (merge e22f2daed0 ry/clarify-fast-forward-in-glossary later to maint). |
| 106 | |
| 107 | * Recent "git clone" left a temporary directory behind when the |
| 108 | transport layer returned an failure. |
| 109 | (merge 6aacb7d861 jk/clone-clean-upon-transport-error later to maint). |
| 110 | |
| 111 | * "git fetch" over protocol v2 left its side of the socket open after |
| 112 | it finished speaking, which unnecessarily wasted the resource on |
| 113 | the other side. |
| 114 | (merge ae1a7eefff jk/fetch-pack-v2-half-close-early later to maint). |
| 115 | |
| 116 | * The command line completion (in contrib/) learned that "git diff" |
| 117 | takes the "--anchored" option. |
| 118 | (merge d1e7c2cac9 tb/complete-diff-anchored later to maint). |
| 119 | |
| 120 | * "git-svn" tests assumed that "locale -a", which is used to pick an |
| 121 | available UTF-8 locale, is available everywhere. A knob has been |
| 122 | introduced to allow testers to specify a suitable locale to use. |
| 123 | (merge 482c962de4 dd/svn-test-wo-locale-a later to maint). |
| 124 | |
| 125 | * Update "git subtree" to work better on Windows. |
| 126 | (merge 77f37de39f js/subtree-on-windows-fix later to maint). |
| 127 | |
| 128 | * Remove multimail from contrib/ |
| 129 | (merge f74d11471f js/no-more-multimail later to maint). |
| 130 | |
| 131 | * Make the codebase MSAN clean. |
| 132 | (merge 4dbc55e87d ah/uninitialized-reads-fix later to maint). |
| 133 | |
| 134 | * Work around inefficient glob substitution in older versions of bash |
| 135 | by rewriting parts of a test. |
| 136 | (merge eb87c6f559 jx/t6020-with-older-bash later to maint). |
| 137 | |
| 138 | * Avoid duplicated work while building reachability bitmaps. |
| 139 | (merge aa9ad6fee5 jk/bitmap-tree-optim later to maint). |
| 140 | |
| 141 | * We broke "GIT_SKIP_TESTS=t?000" to skip certain tests in recent |
| 142 | update, which got fixed. |
| 143 | |
| 144 | * The side-band demultiplexer that is used to display progress output |
| 145 | from the remote end did not clear the line properly when the end of |
| 146 | line hits at a packet boundary, which has been corrected. |
| 147 | |
| 148 | * Some test scripts assumed that readlink(1) was universally |
| 149 | installed and available, which is not the case. |
| 150 | (merge 7c0afdf23c jk/test-without-readlink-1 later to maint). |
| 151 | |
| 152 | * Recent update to completion script (in contrib/) broke those who |
| 153 | use the __git_complete helper to define completion to their custom |
| 154 | command. |
| 155 | (merge cea232194d fw/complete-cmd-idx-fix later to maint). |
| 156 | |
| 157 | * Output from some of our tests were affected by the width of the |
| 158 | terminal that they were run in, which has been corrected by |
| 159 | exporting a fixed value in the COLUMNS environment. |
| 160 | (merge c49a177bec ab/fix-columns-to-80-during-tests later to maint). |
| 161 | |
| 162 | * On Windows, mergetool has been taught to find kdiff3.exe just like |
| 163 | it finds winmerge.exe. |
| 164 | (merge 47eb4c6890 ms/mergetools-kdiff3-on-windows later to maint). |
| 165 | |
| 166 | * When we cannot figure out how wide the terminal is, we use a |
| 167 | fallback value of 80 ourselves (which cannot be avoided), but when |
| 168 | we run the pager, we export it in COLUMNS, which forces the pager |
| 169 | to use the hardcoded value, even when the pager is perfectly |
| 170 | capable to figure it out itself. Stop exporting COLUMNS when we |
| 171 | fall back on the hardcoded default value for our own use. |
| 172 | (merge 9b6e2c8b98 js/stop-exporting-bogus-columns later to maint). |
| 173 | |
| 174 | * "git cat-file --batch-all-objects"" misbehaved when "--batch" is in |
| 175 | use and did not ask for certain object traits. |
| 176 | (merge ee02ac6164 zh/cat-file-batch-fix later to maint). |
| 177 | |
| 178 | * Some code and doc clarification around "git push". |
| 179 | |
| 180 | * The "union" conflict resultion variant misbehaved when used with |
| 181 | binary merge driver. |
| 182 | (merge 382b601acd jk/union-merge-binary later to maint). |
| 183 | |
| 184 | * Prevent "git p4" from failing to submit changes to binary file. |
| 185 | (merge 54662d5958 dc/p4-binary-submit-fix later to maint). |
| 186 | |
| 187 | * "git grep --and -e foo" ought to have been diagnosed as an error |
| 188 | but instead segfaulted, which has been corrected. |
| 189 | (merge fe7fe62d8d rs/grep-parser-fix later to maint). |
| 190 | |
| 191 | * The merge code had funny interactions between content based rename |
| 192 | detection and directory rename detection. |
| 193 | (merge 3585d0ea23 en/merge-dir-rename-corner-case-fix later to maint). |
| 194 | |
| 195 | * When rebuilding the multi-pack index file reusing an existing one, |
| 196 | we used to blindly trust the existing file and ended up carrying |
| 197 | corrupted data into the updated file, which has been corrected. |
| 198 | (merge f89ecf7988 tb/midx-use-checksum later to maint). |
| 199 | |
| 200 | * Update the location of system-side configuration file on Windows. |
| 201 | (merge e355307692 js/gfw-system-config-loc-fix later to maint). |
| 202 | |
| 203 | * Code recently added to support common ancestry negotiation during |
| 204 | "git push" did not sanity check its arguments carefully enough. |
| 205 | (merge eff40457a4 ab/fetch-negotiate-segv-fix later to maint). |
| 206 | |
| 207 | * Update the documentation not to assume users are of certain gender |
| 208 | and adds to guidelines to do so. |
| 209 | (merge 46a237f42f ds/gender-neutral-doc later to maint). |
| 210 | |
| 211 | * "git commit --allow-empty-message" won't abort the operation upon |
| 212 | an empty message, but the hint shown in the editor said otherwise. |
| 213 | (merge 6f70f00b4f hj/commit-allow-empty-message later to maint). |
| 214 | |
| 215 | * The code that gives an error message in "git multi-pack-index" when |
| 216 | no subcommand is given tried to print a NULL pointer as a strong, |
| 217 | which has been corrected. |
| 218 | (merge 88617d11f9 tb/reverse-midx later to maint). |
| 219 | |
| 220 | * CI update. |
| 221 | (merge a066a90db6 js/ci-check-whitespace-updates later to maint). |
| 222 | |
| 223 | * Documentation fix for "git pull --rebase=no". |
| 224 | (merge d3236becec fc/pull-no-rebase-merges-theirs-into-ours later to maint). |
| 225 | |
| 226 | * A race between repacking and using pack bitmaps has been corrected. |
| 227 | (merge dc1daacdcc jk/check-pack-valid-before-opening-bitmap later to maint). |
| 228 | |
| 229 | * The local changes stashed by "git merge --autostash" were lost when |
| 230 | the merge failed in certain ways, which has been corrected. |
| 231 | |
| 232 | * Windows rmdir() equivalent behaves differently from POSIX ones in |
| 233 | that when used on a symbolic link that points at a directory, the |
| 234 | target directory gets removed, which has been corrected. |
| 235 | (merge 3e7d4888e5 tb/mingw-rmdir-symlink-to-directory later to maint). |
| 236 | |
| 237 | * Other code cleanup, docfix, build fix, etc. |
| 238 | (merge bfe35a6165 ah/doc-describe later to maint). |
| 239 | (merge f302c1e4aa jc/clarify-revision-range later to maint). |
| 240 | (merge 3127ff90ea tl/fix-packfile-uri-doc later to maint). |
| 241 | (merge a84216c684 jk/doc-color-pager later to maint). |
| 242 | (merge 4e0a64a713 ab/trace2-squelch-gcc-warning later to maint). |
| 243 | (merge 225f7fa847 ps/rev-list-object-type-filter later to maint). |
| 244 | (merge 5317dfeaed dd/honor-users-tar-in-tests later to maint). |
| 245 | (merge ace6d8e3d6 tk/partial-clone-repack-doc later to maint). |
| 246 | (merge 7ba68e0cf1 js/trace2-discard-event-docfix later to maint). |
| 247 | (merge 8603c419d3 fc/doc-default-to-upstream-config later to maint). |
| 248 | (merge 1d72b604ef jk/revision-squelch-gcc-warning later to maint). |
| 249 | (merge abcb66c614 ar/typofix later to maint). |
| 250 | (merge 9853830787 ah/graph-typofix later to maint). |
| 251 | (merge aac578492d ab/config-hooks-path-testfix later to maint). |
| 252 | (merge 98c7656a18 ar/more-typofix later to maint). |
| 253 | (merge 6fb9195f6c jk/doc-max-pack-size later to maint). |
| 254 | (merge 4184cbd635 ar/mailinfo-memcmp-to-skip-prefix later to maint). |
| 255 | (merge 91d2347033 ar/doc-libera-chat-in-my-first-contrib later to maint). |
| 256 | (merge 338abb0f04 ab/cmd-foo-should-return later to maint). |
| 257 | (merge 546096a5cb ab/xdiff-bug-cleanup later to maint). |
| 258 | (merge b7b793d1e7 ab/progress-cleanup later to maint). |
| 259 | (merge d94f9b8e90 ba/object-info later to maint). |
| 260 | (merge 52ff891c03 ar/test-code-cleanup later to maint). |
| 261 | (merge a0538e5c8b dd/document-log-decorate-default later to maint). |
| 262 | (merge ce24797d38 mr/cmake later to maint). |
| 263 | (merge 9eb542f2ee ab/pre-auto-gc-hook-test later to maint). |
| 264 | (merge 9fffc38583 bk/doc-commit-typofix later to maint). |
| 265 | (merge 1cf823d8f0 ks/submodule-cleanup later to maint). |
| 266 | (merge ebbf5d2b70 js/config-mak-windows-pcre-fix later to maint). |
| 267 | (merge 617480d75b hn/refs-iterator-peel-returns-boolean later to maint). |
| 268 | (merge 6a24cc71ed ar/submodule-helper-include-cleanup later to maint). |
| 269 | (merge 5632e838f8 rs/khash-alloc-cleanup later to maint). |
| 270 | (merge b1d87fbaf1 jk/typofix later to maint). |
| 271 | (merge e04170697a ab/gitignore-discovery-doc later to maint). |
| 272 | (merge 8232a0ff48 dl/packet-read-response-end-fix later to maint). |
| 273 | (merge eb448631fb dl/diff-merge-base later to maint). |
| 274 | (merge c510928a25 hn/refs-debug-empty-prefix later to maint). |
| 275 | (merge ddcb189d9d tb/bitmap-type-filter-comment-fix later to maint). |
| 276 | (merge 878b399734 pb/submodule-recurse-doc later to maint). |
| 277 | (merge 734283855f jk/config-env-doc later to maint). |
| 278 | (merge 482e1488a9 ab/getcwd-test later to maint). |
| 279 | (merge f0b922473e ar/doc-markup-fix later to maint). |